// $ANTLR 3.1.2 D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g 2009-03-29 13:42:29

    package com.sun.tools.javac.antlr;
    import com.sun.tools.javac.tree.JCTree.*;
    import com.sun.tools.javac.tree.JCTree;
    import com.sun.tools.javac.tree.TreeMaker;
    import com.sun.tools.javac.util.Context;
    import com.sun.tools.javac.util.*;
    import com.sun.tools.javac.code.*;
    import com.sun.tools.javac.code.TypeTags;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
/** A Java 1.5 grammar for ANTLR v3 derived from the spec
 *
 *  This is a very close representation of the spec; the changes
 *  are comestic (remove left recursion) and also fixes (the spec
 *  isn't exactly perfect).  I have run this on the 1.4.2 source
 *  and some nasty looking enums from 1.5, but have not really
 *  tested for 1.5 compatibility.
 *
 *  I built this with: java -Xmx100M org.antlr.Tool java.g
 *  and got two errors that are ok (for now):
 *  java.g:691:9: Decision can match input such as
 *    "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
 *    using multiple alternatives: 3, 4
 *  As a result, alternative(s) 4 were disabled for that input
 *  java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
 *    '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
 *    '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
 *    '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
 *    using multiple alternatives: 1, 2
 *  As a result, alternative(s) 2 were disabled for that input
 *
 *  You can turn enum on/off as a keyword :)
 *
 *  Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
 *
 *  Primary author: Terence Parr, July 2006
 *
 *  Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
 *      October 25, 2006;
 *      fixed normalInterfaceDeclaration: now uses typeParameters instead
 *          of typeParameter (according to JLS, 3rd edition)
 *      fixed castExpression: no longer allows expression next to type
 *          (according to semantics in JLS, in contrast with syntax in JLS)
 *
 *  Version 1.0.2 -- Terence Parr, Nov 27, 2006
 *      java spec I built this from had some bizarre for-loop control.
 *          Looked weird and so I looked elsewhere...Yep, it's messed up.
 *          simplified.
 *
 *  Version 1.0.3 -- Chris Hogue, Feb 26, 2007
 *      Factored out an annotationName rule and used it in the annotation rule.
 *          Not sure why, but typeName wasn't recognizing references to inner
 *          annotations (e.g. @InterfaceName.InnerAnnotation())
 *      Factored out the elementValue section of an annotation reference.  Created
 *          elementValuePair and elementValuePairs rules, then used them in the
 *          annotation rule.  Allows it to recognize annotation references with
 *          multiple, comma separated attributes.
 *      Updated elementValueArrayInitializer so that it allows multiple elements.
 *          (It was only allowing 0 or 1 element).
 *      Updated localVariableDeclaration to allow annotations.  Interestingly the JLS
 *          doesn't appear to indicate this is legal, but it does work as of at least
 *          JDK 1.5.0_06.
 *      Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
 *          Because annotationConstantRest already references variableDeclarator which
 *          has the Identifier portion in it, the parser would fail on constants in
 *          annotation definitions because it expected two identifiers.
 *      Added optional trailing ';' to the alternatives in annotationTypeElementRest.
 *          Wouldn't handle an inner interface that has a trailing ';'.
 *      Swapped the expression and type rule reference order in castExpression to
 *          make it check for genericized casts first.  It was failing to recognize a
 *          statement like  "Class<Byte> TYPE = (Class<Byte>)...;" because it was seeing
 *          'Class<Byte' in the cast expression as a less than expression, then failing
 *          on the '>'.
 *      Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
 *         
 *      Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
 *          just 'arguments'.  The case it couldn't handle was a call to an explicit
 *          generic method invocation (e.g. this.<E>doSomething()).  Using identifierSuffix
 *          may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
 *
 *  Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
 *
 *  Fixed formalParameterDecls, localVariableDeclaration, forInit,
 *  and forVarControl to use variableModifier* not 'final'? (annotation)?
 *
 *  Version 1.0.5 -- Terence, June 21, 2007
 *  --a[i].foo didn't work. Fixed unaryExpression
 *
 *  Version 1.0.6 -- John Ridgway, March 17, 2008
 *      Made "assert" a switchable keyword like "enum".
 *      Fixed compilationUnit to disallow "annotation importDeclaration ...".
 *      Changed "Identifier ('.' Identifier)*" to "qualifiedName" in more
 *          places.
 *      Changed modifier* and/or variableModifier* to classOrInterfaceModifiers,
 *          modifiers or variableModifiers, as appropriate.
 *      Renamed "bound" to "typeBound" to better match language in the JLS.
 *      Added "memberDeclaration" which rewrites to methodDeclaration or
 *      fieldDeclaration and pulled type into memberDeclaration.  So we parse
 *          type and then move on to decide whether we're dealing with a field
 *          or a method.
 *      Modified "constructorDeclaration" to use "constructorBody" instead of
 *          "methodBody".  constructorBody starts with explicitConstructorInvocation,
 *          then goes on to blockStatement*.  Pulling explicitConstructorInvocation
 *          out of expressions allowed me to simplify "primary".
 *      Changed variableDeclarator to simplify it.
 *      Changed type to use classOrInterfaceType, thus simplifying it; of course
 *          I then had to add classOrInterfaceType, but it is used in several
 *          places.
 *      Fixed annotations, old version allowed "@X(y,z)", which is illegal.
 *      Added optional comma to end of "elementValueArrayInitializer"; as per JLS.
 *      Changed annotationTypeElementRest to use normalClassDeclaration and
 *          normalInterfaceDeclaration rather than classDeclaration and
 *          interfaceDeclaration, thus getting rid of a couple of grammar ambiguities.
 *      Split localVariableDeclaration into localVariableDeclarationStatement
 *          (includes the terminating semi-colon) and localVariableDeclaration.
 *          This allowed me to use localVariableDeclaration in "forInit" clauses,
 *           simplifying them.
 *      Changed switchBlockStatementGroup to use multiple labels.  This adds an
 *          ambiguity, but if one uses appropriately greedy parsing it yields the
 *           parse that is closest to the meaning of the switch statement.
 *      Renamed "forVarControl" to "enhancedForControl" -- JLS language.
 *      Added semantic predicates to test for shift operations rather than other
 *          things.  Thus, for instance, the string "< <" will never be treated
 *          as a left-shift operator.
 *      In "creator" we rule out "nonWildcardTypeArguments" on arrayCreation,
 *          which are illegal.
 *      Moved "nonWildcardTypeArguments into innerCreator.
 *      Removed 'super' superSuffix from explicitGenericInvocation, since that
 *          is only used in explicitConstructorInvocation at the beginning of a
 *           constructorBody.  (This is part of the simplification of expressions
 *           mentioned earlier.)
 *      Simplified primary (got rid of those things that are only used in
 *          explicitConstructorInvocation).
 *      Lexer -- removed "Exponent?" from FloatingPointLiteral choice 4, since it
 *          led to an ambiguity.
 *
 *      This grammar successfully parses every .java file in the JDK 1.5 source
 *          tree (excluding those whose file names include '-', which are not
 *          valid Java compilation units).
 *
 *  Known remaining problems:
 *      "Letter" and "JavaIDDigit" are wrong.  The actual specification of
 *      "Letter" should be "a character for which the method
 *      Character.isJavaIdentifierStart(int) returns true."  A "Java
 *      letter-or-digit is a character for which the method
 *      Character.isJavaIdentifierPart(int) returns true."
 */
public class JavaParser extends AntlrJavacParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "IDENTIFIER", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "GOTO", "IF", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "INTLITERAL", "LONGLITERAL", "FLOATLITERAL", "DOUBLELITERAL", "CHARLITERAL", "STRINGLITERAL", "TRUE", "FALSE", "NULL", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "SEMI", "COMMA", "DOT", "ELLIPSIS", "EQ", "GT", "LT", "BANG", "TILDE", "QUES", "COLON", "EQEQ", "LTEQ", "BANGEQ", "AMPAMP", "BARBAR", "PLUSPLUS", "SUBSUB", "PLUS", "SUB", "STAR", "SLASH", "AMP", "BAR", "CARET", "PERCENT", "PLUSEQ", "SUBEQ", "STAREQ", "SLASHEQ", "AMPEQ", "BAREQ", "CARETEQ", "PERCENTEQ", "MONKEYS_AT", "LTLT", "LTLTEQ", "GTEQ", "GTGT", "GTGTEQ", "GTGTGT", "GTGTGTEQ", "IntegerNumber", "LongSuffix", "HexPrefix", "HexDigit", "Exponent", "NonIntegerNumber", "FloatSuffix", "DoubleSuffix", "EscapeSequence", "WS", "COMMENT", "LINE_COMMENT", "IdentifierStart", "IdentifierPart", "SurrogateIdentifer", "VAR", "'var'"
    };
    public static final int PACKAGE=36;
    public static final int LT=76;
    public static final int STAR=91;
    public static final int WHILE=54;
    public static final int CONST=14;
    public static final int CASE=10;
    public static final int NEW=35;
    public static final int CHAR=12;
    public static final int DO=17;
    public static final int EOF=-1;
    public static final int GTGT=203;
    public static final int BREAK=8;
    public static final int LBRACKET=68;
    public static final int FINAL=22;
    public static final int RPAREN=65;
    public static final int IMPORT=29;
    public static final int SUBSUB=88;
    public static final int STAREQ=102;
    public static final int NonIntegerNumber=212;
    public static final int FloatSuffix=213;
    public static final int CARET=95;
    public static final int RETURN=40;
    public static final int THIS=47;
    public static final int DOUBLE=18;
    public static final int MONKEYS_AT=111;
    public static final int BARBAR=86;
    public static final int VAR=222;
    public static final int VOID=52;
    public static final int SUPER=44;
    public static final int GOTO=26;
    public static final int EQ=74;
    public static final int AMPAMP=85;
    public static final int COMMENT=217;
    public static final int QUES=79;
    public static final int LTLTEQ=201;
    public static final int EQEQ=81;
    public static final int HexPrefix=209;
    public static final int RBRACE=67;
    public static final int LINE_COMMENT=218;
    public static final int STATIC=42;
    public static final int PRIVATE=37;
    public static final int SWITCH=45;
    public static final int NULL=63;
    public static final int GTGTEQ=204;
    public static final int ELSE=19;
    public static final int STRICTFP=43;
    public static final int DOUBLELITERAL=58;
    public static final int IdentifierStart=219;
    public static final int ELLIPSIS=73;
    public static final int NATIVE=34;
    public static final int THROWS=49;
    public static final int INT=31;
    public static final int SLASHEQ=103;
    public static final int INTLITERAL=55;
    public static final int ASSERT=6;
    public static final int TRY=51;
    public static final int LongSuffix=208;
    public static final int LONGLITERAL=56;
    public static final int WS=216;
    public static final int SurrogateIdentifer=221;
    public static final int CHARLITERAL=59;
    public static final int GT=75;
    public static final int CATCH=11;
    public static final int FALSE=62;
    public static final int EscapeSequence=215;
    public static final int THROW=48;
    public static final int PROTECTED=38;
    public static final int CLASS=13;
    public static final int BAREQ=105;
    public static final int IntegerNumber=207;
    public static final int AMP=93;
    public static final int PLUSPLUS=87;
    public static final int LBRACE=66;
    public static final int LTEQ=82;
    public static final int GTGTGT=205;
    public static final int SUBEQ=101;
    public static final int Exponent=211;
    public static final int FOR=25;
    public static final int SUB=90;
    public static final int FLOAT=24;
    public static final int ABSTRACT=5;
    public static final int HexDigit=210;
    public static final int T__223=223;
    public static final int PLUSEQ=100;
    public static final int LPAREN=64;
    public static final int IF=27;
    public static final int SLASH=92;
    public static final int BOOLEAN=7;
    public static final int SYNCHRONIZED=46;
    public static final int GTGTGTEQ=206;
    public static final int IMPLEMENTS=28;
    public static final int CONTINUE=15;
    public static final int COMMA=71;
    public static final int AMPEQ=104;
    public static final int TRANSIENT=50;
    public static final int IDENTIFIER=4;
    public static final int TILDE=78;
    public static final int BANGEQ=84;
    public static final int PLUS=89;
    public static final int RBRACKET=69;
    public static final int DOT=72;
    public static final int LTLT=200;
    public static final int IdentifierPart=220;
    public static final int BYTE=9;
    public static final int PERCENT=96;
    public static final int VOLATILE=53;
    public static final int DEFAULT=16;
    public static final int SHORT=41;
    public static final int BANG=77;
    public static final int INSTANCEOF=30;
    public static final int GTEQ=202;
    public static final int TRUE=61;
    public static final int SEMI=70;
    public static final int COLON=80;
    public static final int ENUM=20;
    public static final int PERCENTEQ=107;
    public static final int FINALLY=23;
    public static final int DoubleSuffix=214;
    public static final int STRINGLITERAL=60;
    public static final int CARETEQ=106;
    public static final int INTERFACE=32;
    public static final int LONG=33;
    public static final int PUBLIC=39;
    public static final int EXTENDS=21;
    public static final int FLOATLITERAL=57;
    public static final int BAR=94;

    // delegates
    // delegators

    protected static class GScope_scope {
        Name name;
        String className;
        String methodName;
    }
    protected Stack GScope_stack = new Stack();


        public JavaParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public JavaParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
            this.state.ruleMemo = new HashMap[387+1];
             
             
        }
        

    public String[] getTokenNames() { return JavaParser.tokenNames; }
    public String getGrammarFileName() { return "D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g"; }


        boolean debug = true;
        
        // temp variables
        private int ti = 0;
        private String ts = null;    
        
        public JavaParser(TokenStream input, AntlrParserFactory fac, boolean keepDocComments, boolean keepEndPosition, boolean keepLineMap, char[] rawInput) {
            this(input);
            //NOTE: Don't try to put this in super class constructor, must call the antlr generated constructor first.
            super.init(fac, keepDocComments, keepEndPosition, keepLineMap, rawInput);
        }
        
        public JCCompilationUnit parseCompilationUnit() {
            if(super.isLexingError()==true){
                // Errors should be logged in lexer already, no more parsing.
                return TREE_BLANK;
            }
            
            if(input.LA(1)==-1){
                // Blank input, end of file reached.
                return TREE_BLANK;
            }
            
            try{
                return this.compilationUnit().tree;
            } catch (Exception e) {
               if(debug){
                   e.printStackTrace();
               }
               //TODO: could be various reasons, how to track? 
               log.error(0, "premature.eof"); 
               return TREE_BLANK;
            }
        }            
        

        protected boolean enumSupported() {
            return source.allowGenerics();
        }

        protected boolean assertSupported() {
            return source.allowAsserts();
        }

        protected boolean varArgSupported() {
            return source.allowVarargs();
        }

        protected boolean foreachSupported() {
            return source.allowForeach();
        }

        protected boolean staticImportSupported() {
            return source.allowStaticImport();
        }

        protected boolean annotationSupported() {
            return source.allowAnnotations();
        }

        protected boolean genericSupported() {
            return source.allowGenerics();
        }

        protected void checkEnum(Token token) {
            if (enumSupported() == false && enumErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "enums.not.supported.in.source", source.name);
                enumErrorDisplayed = true;
            }
        }

        protected void checkAssert(Token token) {
            if (assertSupported() == false && assertErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "assert.as.identifier", source.name);
                assertErrorDisplayed = true;
            }
        }

        protected void checkVarArg(Token token) {
            if (varArgSupported() == false && varArgErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "varargs.not.supported.in.source", source.name);
                varArgErrorDisplayed = true;
            }
        }

        protected void checkForeach(Token token) {
            if (foreachSupported() == false && foreachErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "foreach.not.supported.in.source", source.name);
                foreachErrorDisplayed = true;
            }
        }

        protected void checkStaticImport(Token token) {
            if (staticImportSupported() == false && staticImportErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "static.import.not.supported.in.source", source.name);
                staticImportErrorDisplayed = true;
            }
        }

        protected void checkAnnotation(Token token) {
            if (annotationSupported() == false && annotationErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "annotations.not.supported.in.source", source.name);
                annotationErrorDisplayed = true;
            }
        }

        protected void checkGeneric(Token token) {
            if (genericSupported() == false && genericErrorDisplayed == false) {
                log.error(((AntlrJavacToken) token).getStartIndex(), "generics.not.supported.in.source", source.name);
                genericErrorDisplayed = true;
            }
        }


    public static class compilationUnit_return extends ParserRuleReturnScope {
        public JCCompilationUnit tree;
    };

    // $ANTLR start "compilationUnit"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:564:1: compilationUnit returns [JCCompilationUnit tree] : ( ( annotations )? packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ;
    public final JavaParser.compilationUnit_return compilationUnit() throws RecognitionException {
        JavaParser.compilationUnit_return retval = new JavaParser.compilationUnit_return();
        retval.start = input.LT(1);
        int compilationUnit_StartIndex = input.index();
        JavaParser.annotations_return annotations1 = null;

        JCExpression packageDeclaration2 = null;

        JavaParser.importDeclaration_return importDeclaration3 = null;

        JCTree typeDeclaration4 = null;



                    JCExpression pid = null;
                    com.sun.tools.javac.util.List<JCAnnotation> packageAnnotations =
                        com.sun.tools.javac.util.List.<JCAnnotation>nil();
                    ListBuffer<JCTree> defs = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:5: ( ( ( annotations )? packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:9: ( ( annotations )? packageDeclaration )? ( importDeclaration )* ( typeDeclaration )*
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:9: ( ( annotations )? packageDeclaration )?
            int alt2=2;
            alt2 = dfa2.predict(input);
            switch (alt2) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:13: ( annotations )? packageDeclaration
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:13: ( annotations )?
                    int alt1=2;
                    int LA1_0 = input.LA(1);

                    if ( (LA1_0==MONKEYS_AT) ) {
                        alt1=1;
                    }
                    switch (alt1) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:14: annotations
                            {
                            pushFollow(FOLLOW_annotations_in_compilationUnit163);
                            annotations1=annotations();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  packageAnnotations = (annotations1!=null?annotations1.list:null);
                                                  pu.storeEnd(T.at(0).Modifiers(0, packageAnnotations),(annotations1!=null?((Token)annotations1.stop):null));
                                              
                            }

                            }
                            break;

                    }

                    pushFollow(FOLLOW_packageDeclaration_in_compilationUnit210);
                    packageDeclaration2=packageDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          pid=packageDeclaration2;
                                      
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:620:9: ( importDeclaration )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==IMPORT) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:620:10: importDeclaration
            	    {
            	    pushFollow(FOLLOW_importDeclaration_in_compilationUnit250);
            	    importDeclaration3=importDeclaration();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      defs.append((importDeclaration3!=null?importDeclaration3.tree:null));
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:625:9: ( typeDeclaration )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( ((LA4_0>=IDENTIFIER && LA4_0<=ABSTRACT)||LA4_0==CLASS||LA4_0==ENUM||LA4_0==FINAL||LA4_0==INTERFACE||LA4_0==NATIVE||(LA4_0>=PRIVATE && LA4_0<=PUBLIC)||(LA4_0>=STATIC && LA4_0<=STRICTFP)||LA4_0==SYNCHRONIZED||LA4_0==TRANSIENT||LA4_0==VOLATILE||LA4_0==SEMI||LA4_0==MONKEYS_AT) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:625:10: typeDeclaration
            	    {
            	    pushFollow(FOLLOW_typeDeclaration_in_compilationUnit286);
            	    typeDeclaration4=typeDeclaration();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      defs.append(typeDeclaration4);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          int pos = 0;
                          try {
                              pos =((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                          } catch (Exception e) {
                              log.error(((CommonToken)retval.start).getStartIndex(), "expected3", "class", "interface", "enum"); 
                          }

                          retval.tree = T.at(pos).TopLevel(packageAnnotations, pid, defs.toList());
                          if (defs.elems.isEmpty() && ((Token)retval.stop) != null) {
                              pu.storeEnd(retval.tree, ((Token)retval.stop));
                          }
                          if (((Token)retval.stop) != null) {
                              pu.attach(retval.tree, ((AntlrJavacToken) ((Token)retval.start)).docComment);
                          }
                          if (keepDocComment == true) {
                              retval.tree.docComments = pu.getDocComments();
                          }
                          if (keepEndPosition == true) {
                              retval.tree.endPositions = pu.getEndPositions();
                          }            
                          if (keepLineMap == true) {
                              retval.tree.lineMap = com.sun.tools.javac.util.Position.makeLineMap(rawInput, rawInput.length, false);
                          }
                          
                          Token t = input.LT(1);
                          if (t == null || t.getType() > 0) {
                              if (t instanceof AntlrJavacToken) {
                                  log.error(((AntlrJavacToken)t).getStartIndex(), "expected3", "class", "interface", "enum");
                              } else {
                                  log.error(((CommonToken)t).getStartIndex(), "expected3", "class", "interface", "enum"); 
                              }
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 1, compilationUnit_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "compilationUnit"


    // $ANTLR start "packageDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:632:1: packageDeclaration returns [JCExpression tree] : 'package' qualifiedName ';' ;
    public final JCExpression packageDeclaration() throws RecognitionException {
        JCExpression tree = null;
        int packageDeclaration_StartIndex = input.index();
        JCExpression qualifiedName5 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:633:5: ( 'package' qualifiedName ';' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:633:9: 'package' qualifiedName ';'
            {
            match(input,PACKAGE,FOLLOW_PACKAGE_in_packageDeclaration334); if (state.failed) return tree;
            pushFollow(FOLLOW_qualifiedName_in_packageDeclaration336);
            qualifiedName5=qualifiedName();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              tree=qualifiedName5;
                          
            }
            match(input,SEMI,FOLLOW_SEMI_in_packageDeclaration360); if (state.failed) return tree;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "packageDeclaration"

    public static class importDeclaration_return extends ParserRuleReturnScope {
        public JCTree tree;
    };

    // $ANTLR start "importDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:640:1: importDeclaration returns [JCTree tree] : ( 'import' (sta1= 'static' )? id1= IDENTIFIER do1= '.' ast= '*' ';' | 'import' (sta2= 'static' )? id2= IDENTIFIER (do2= '.' id3= IDENTIFIER )+ (do3= '.' ast2= '*' )? ';' );
    public final JavaParser.importDeclaration_return importDeclaration() throws RecognitionException {
        JavaParser.importDeclaration_return retval = new JavaParser.importDeclaration_return();
        retval.start = input.LT(1);
        int importDeclaration_StartIndex = input.index();
        Token sta1=null;
        Token id1=null;
        Token do1=null;
        Token ast=null;
        Token sta2=null;
        Token id2=null;
        Token do2=null;
        Token id3=null;
        Token do3=null;
        Token ast2=null;


                    JCExpression pid = null ;
                    boolean importStatic = false;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:650:5: ( 'import' (sta1= 'static' )? id1= IDENTIFIER do1= '.' ast= '*' ';' | 'import' (sta2= 'static' )? id2= IDENTIFIER (do2= '.' id3= IDENTIFIER )+ (do3= '.' ast2= '*' )? ';' )
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==IMPORT) ) {
                int LA9_1 = input.LA(2);

                if ( (LA9_1==STATIC) ) {
                    int LA9_2 = input.LA(3);

                    if ( (LA9_2==IDENTIFIER) ) {
                        int LA9_3 = input.LA(4);

                        if ( (LA9_3==DOT) ) {
                            int LA9_4 = input.LA(5);

                            if ( (LA9_4==STAR) ) {
                                alt9=1;
                            }
                            else if ( (LA9_4==IDENTIFIER) ) {
                                alt9=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return retval;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 9, 4, input);

                                throw nvae;
                            }
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return retval;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 9, 3, input);

                            throw nvae;
                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 9, 2, input);

                        throw nvae;
                    }
                }
                else if ( (LA9_1==IDENTIFIER) ) {
                    int LA9_3 = input.LA(3);

                    if ( (LA9_3==DOT) ) {
                        int LA9_4 = input.LA(4);

                        if ( (LA9_4==STAR) ) {
                            alt9=1;
                        }
                        else if ( (LA9_4==IDENTIFIER) ) {
                            alt9=2;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return retval;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 9, 4, input);

                            throw nvae;
                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 9, 3, input);

                        throw nvae;
                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 9, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }
            switch (alt9) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:650:9: 'import' (sta1= 'static' )? id1= IDENTIFIER do1= '.' ast= '*' ';'
                    {
                    match(input,IMPORT,FOLLOW_IMPORT_in_importDeclaration410); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:650:18: (sta1= 'static' )?
                    int alt5=2;
                    int LA5_0 = input.LA(1);

                    if ( (LA5_0==STATIC) ) {
                        alt5=1;
                    }
                    switch (alt5) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:650:19: sta1= 'static'
                            {
                            sta1=(Token)match(input,STATIC,FOLLOW_STATIC_in_importDeclaration415); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              importStatic = true;
                                              checkStaticImport(sta1);               
                                          
                            }

                            }
                            break;

                    }

                    id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_importDeclaration452); if (state.failed) return retval;
                    do1=(Token)match(input,DOT,FOLLOW_DOT_in_importDeclaration456); if (state.failed) return retval;
                    ast=(Token)match(input,STAR,FOLLOW_STAR_in_importDeclaration460); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      pid = T.at(((AntlrJavacToken) id1).getStartIndex()).Ident(((AntlrJavacToken) id1).name);
                                      pu.storeEnd(pid, id1);
                                      pid = T.at(((AntlrJavacToken) do1).getStartIndex()).Select(pid, names.asterisk);
                                      pu.storeEnd(pid,ast);
                                  
                    }
                    match(input,SEMI,FOLLOW_SEMI_in_importDeclaration484); if (state.failed) return retval;

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:665:9: 'import' (sta2= 'static' )? id2= IDENTIFIER (do2= '.' id3= IDENTIFIER )+ (do3= '.' ast2= '*' )? ';'
                    {
                    match(input,IMPORT,FOLLOW_IMPORT_in_importDeclaration502); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:665:18: (sta2= 'static' )?
                    int alt6=2;
                    int LA6_0 = input.LA(1);

                    if ( (LA6_0==STATIC) ) {
                        alt6=1;
                    }
                    switch (alt6) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:665:19: sta2= 'static'
                            {
                            sta2=(Token)match(input,STATIC,FOLLOW_STATIC_in_importDeclaration507); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              importStatic = true;
                                              checkStaticImport(sta2);              
                                          
                            }

                            }
                            break;

                    }

                    id2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_importDeclaration544); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      pid = T.at(((AntlrJavacToken) id2).getStartIndex()).Ident(((AntlrJavacToken) id2).name);
                                      pu.storeEnd(pid, id2);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:676:9: (do2= '.' id3= IDENTIFIER )+
                    int cnt7=0;
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0==DOT) ) {
                            int LA7_1 = input.LA(2);

                            if ( (LA7_1==IDENTIFIER) ) {
                                alt7=1;
                            }


                        }


                        switch (alt7) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:676:10: do2= '.' id3= IDENTIFIER
                    	    {
                    	    do2=(Token)match(input,DOT,FOLLOW_DOT_in_importDeclaration571); if (state.failed) return retval;
                    	    id3=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_importDeclaration575); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      pid = T.at(((AntlrJavacToken) do2).getStartIndex()).Select(pid, ((AntlrJavacToken) id3).name);
                    	                      pu.storeEnd(pid,id3);
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt7 >= 1 ) break loop7;
                    	    if (state.backtracking>0) {state.failed=true; return retval;}
                                EarlyExitException eee =
                                    new EarlyExitException(7, input);
                                throw eee;
                        }
                        cnt7++;
                    } while (true);

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:682:9: (do3= '.' ast2= '*' )?
                    int alt8=2;
                    int LA8_0 = input.LA(1);

                    if ( (LA8_0==DOT) ) {
                        alt8=1;
                    }
                    switch (alt8) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:682:10: do3= '.' ast2= '*'
                            {
                            do3=(Token)match(input,DOT,FOLLOW_DOT_in_importDeclaration613); if (state.failed) return retval;
                            ast2=(Token)match(input,STAR,FOLLOW_STAR_in_importDeclaration617); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              pid = T.at(((AntlrJavacToken) do3).getStartIndex()).Select(pid, names.asterisk);
                                              pu.storeEnd(pid,ast2);
                                          
                            }

                            }
                            break;

                    }

                    match(input,SEMI,FOLLOW_SEMI_in_importDeclaration652); if (state.failed) return retval;

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Import(pid,importStatic);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "importDeclaration"


    // $ANTLR start "qualifiedImportName"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:691:1: qualifiedImportName returns [JCExpression tree] : id1= IDENTIFIER ( '.' id2= IDENTIFIER )* ;
    public final JCExpression qualifiedImportName() throws RecognitionException {
        JCExpression tree = null;
        int qualifiedImportName_StartIndex = input.index();
        Token id1=null;
        Token id2=null;


                    JCExpression pid = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:698:5: (id1= IDENTIFIER ( '.' id2= IDENTIFIER )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:698:9: id1= IDENTIFIER ( '.' id2= IDENTIFIER )*
            {
            id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedImportName703); if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              pid = T.at(id1.getTokenIndex()).Ident(((AntlrJavacToken) id1).name);
                              pu.storeEnd(pid, id1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:703:9: ( '.' id2= IDENTIFIER )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==DOT) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:703:10: '.' id2= IDENTIFIER
            	    {
            	    match(input,DOT,FOLLOW_DOT_in_qualifiedImportName728); if (state.failed) return tree;
            	    id2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedImportName732); if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      pid = T.at(id2.getTokenIndex()).Select(pid, ((AntlrJavacToken) id2).name);
            	                      pu.storeEnd(pid,id2);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = pid;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 4, qualifiedImportName_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "qualifiedImportName"


    // $ANTLR start "typeDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:711:1: typeDeclaration returns [JCTree tree] : ( classOrInterfaceDeclaration | se= ';' );
    public final JCTree typeDeclaration() throws RecognitionException {
        JCTree tree = null;
        int typeDeclaration_StartIndex = input.index();
        Token se=null;
        JCClassDecl classOrInterfaceDeclaration6 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:712:5: ( classOrInterfaceDeclaration | se= ';' )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( ((LA11_0>=IDENTIFIER && LA11_0<=ABSTRACT)||LA11_0==CLASS||LA11_0==ENUM||LA11_0==FINAL||LA11_0==INTERFACE||LA11_0==NATIVE||(LA11_0>=PRIVATE && LA11_0<=PUBLIC)||(LA11_0>=STATIC && LA11_0<=STRICTFP)||LA11_0==SYNCHRONIZED||LA11_0==TRANSIENT||LA11_0==VOLATILE||LA11_0==MONKEYS_AT) ) {
                alt11=1;
            }
            else if ( (LA11_0==SEMI) ) {
                alt11=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return tree;}
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:712:9: classOrInterfaceDeclaration
                    {
                    pushFollow(FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration780);
                    classOrInterfaceDeclaration6=classOrInterfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =classOrInterfaceDeclaration6;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:716:9: se= ';'
                    {
                    se=(Token)match(input,SEMI,FOLLOW_SEMI_in_typeDeclaration806); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = T.at(((AntlrJavacToken) se).getStartIndex()).Skip();
                                      pu.storeEnd(tree, se);
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 5, typeDeclaration_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "typeDeclaration"


    // $ANTLR start "classOrInterfaceDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:723:1: classOrInterfaceDeclaration returns [JCClassDecl tree] : ( ( classHeader | enumHeader )=> classDeclaration | interfaceDeclaration );
    public final JCClassDecl classOrInterfaceDeclaration() throws RecognitionException {
        JCClassDecl tree = null;
        int classOrInterfaceDeclaration_StartIndex = input.index();
        JCClassDecl classDeclaration7 = null;

        JCClassDecl interfaceDeclaration8 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:5: ( ( classHeader | enumHeader )=> classDeclaration | interfaceDeclaration )
            int alt12=2;
            alt12 = dfa12.predict(input);
            switch (alt12) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:9: ( classHeader | enumHeader )=> classDeclaration
                    {
                    pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration853);
                    classDeclaration7=classDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =classDeclaration7;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:728:9: interfaceDeclaration
                    {
                    pushFollow(FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration877);
                    interfaceDeclaration8=interfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =interfaceDeclaration8;
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 6, classOrInterfaceDeclaration_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "classOrInterfaceDeclaration"

    public static class modifiers_return extends ParserRuleReturnScope {
        public JCModifiers tree;
    };

    // $ANTLR start "modifiers"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:734:1: modifiers returns [JCModifiers tree] : ( options {k=1; backtrack=false; } : {...}?an= annotation | pub= 'public' | pro= 'protected' | pri= 'private' | st= 'static' | ab= 'abstract' | fi= 'final' | na= 'native' | syn= 'synchronized' | tra= 'transient' | vo= 'volatile' | str= 'strictfp' )* ;
    public final JavaParser.modifiers_return modifiers() throws RecognitionException {
        JavaParser.modifiers_return retval = new JavaParser.modifiers_return();
        retval.start = input.LT(1);
        int modifiers_StartIndex = input.index();
        Token pub=null;
        Token pro=null;
        Token pri=null;
        Token st=null;
        Token ab=null;
        Token fi=null;
        Token na=null;
        Token syn=null;
        Token tra=null;
        Token vo=null;
        Token str=null;
        JavaParser.annotation_return an = null;



                    ListBuffer<JCAnnotation> annotations = new ListBuffer<JCAnnotation>();
                    long flags = 0, flag = 0;
                    if (((AntlrJavacToken) ((Token)retval.start)).deprecated == true) {
                        flags |= Flags.DEPRECATED;
                    }
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:766:5: ( ( options {k=1; backtrack=false; } : {...}?an= annotation | pub= 'public' | pro= 'protected' | pri= 'private' | st= 'static' | ab= 'abstract' | fi= 'final' | na= 'native' | syn= 'synchronized' | tra= 'transient' | vo= 'volatile' | str= 'strictfp' )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:767:5: ( options {k=1; backtrack=false; } : {...}?an= annotation | pub= 'public' | pro= 'protected' | pri= 'private' | st= 'static' | ab= 'abstract' | fi= 'final' | na= 'native' | syn= 'synchronized' | tra= 'transient' | vo= 'volatile' | str= 'strictfp' )*
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:767:5: ( options {k=1; backtrack=false; } : {...}?an= annotation | pub= 'public' | pro= 'protected' | pri= 'private' | st= 'static' | ab= 'abstract' | fi= 'final' | na= 'native' | syn= 'synchronized' | tra= 'transient' | vo= 'volatile' | str= 'strictfp' )*
            loop13:
            do {
                int alt13=13;
                alt13 = dfa13.predict(input);
                switch (alt13) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:767:45: {...}?an= annotation
            	    {
            	    if ( !((input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)) ) {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        throw new FailedPredicateException(input, "modifiers", "input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE");
            	    }
            	    pushFollow(FOLLOW_annotation_in_modifiers967);
            	    an=annotation();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      // The lookahead of the next two tokens gives antlr little help so it doesn't go too far
            	                      // trying parse everything to figure out which route to go.
            	                      annotations.append((an!=null?an.tree:null)); /* don't set flag for annotations */
            	                  
            	    }

            	    }
            	    break;
            	case 2 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:773:9: pub= 'public'
            	    {
            	    pub=(Token)match(input,PUBLIC,FOLLOW_PUBLIC_in_modifiers993); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.PUBLIC;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)pub).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 3 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:782:9: pro= 'protected'
            	    {
            	    pro=(Token)match(input,PROTECTED,FOLLOW_PROTECTED_in_modifiers1019); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.PROTECTED;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)pro).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 4 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:791:9: pri= 'private'
            	    {
            	    pri=(Token)match(input,PRIVATE,FOLLOW_PRIVATE_in_modifiers1045); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.PRIVATE;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)pri).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 5 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:800:9: st= 'static'
            	    {
            	    st=(Token)match(input,STATIC,FOLLOW_STATIC_in_modifiers1071); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.STATIC;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)st).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 6 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:809:9: ab= 'abstract'
            	    {
            	    ab=(Token)match(input,ABSTRACT,FOLLOW_ABSTRACT_in_modifiers1097); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.ABSTRACT;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)ab).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 7 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:818:9: fi= 'final'
            	    {
            	    fi=(Token)match(input,FINAL,FOLLOW_FINAL_in_modifiers1123); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.FINAL;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)fi).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 8 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:827:9: na= 'native'
            	    {
            	    na=(Token)match(input,NATIVE,FOLLOW_NATIVE_in_modifiers1149); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.NATIVE;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)na).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 9 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:836:9: syn= 'synchronized'
            	    {
            	    syn=(Token)match(input,SYNCHRONIZED,FOLLOW_SYNCHRONIZED_in_modifiers1175); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.SYNCHRONIZED;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)syn).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 10 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:845:9: tra= 'transient'
            	    {
            	    tra=(Token)match(input,TRANSIENT,FOLLOW_TRANSIENT_in_modifiers1201); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.TRANSIENT;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)tra).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 11 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:854:9: vo= 'volatile'
            	    {
            	    vo=(Token)match(input,VOLATILE,FOLLOW_VOLATILE_in_modifiers1227); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.VOLATILE;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)vo).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;
            	case 12 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:863:9: str= 'strictfp'
            	    {
            	    str=(Token)match(input,STRICTFP,FOLLOW_STRICTFP_in_modifiers1253); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      flag = Flags.STRICTFP;
            	                      if ((flags & flag) != 0) {
            	                          log.error(((AntlrJavacToken)str).getStartIndex(), "repeated.modifier");
            	                      } else {
            	                          flags |= flag;
            	                      }
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          // look ahead for interface or enums
                          ti = input.LA(1);
                          if (ti == INTERFACE) {
                              flags |= Flags.INTERFACE;
                          } else if (ti == ENUM) {
                              flags |= Flags.ENUM;
                          }
                          int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                          if (flags == 0 && annotations.isEmpty()) {
                              pos = Position.NOPOS;
                          }
                          retval.tree = T.at(pos).Modifiers(flags, annotations.toList());
                          if (pos != Position.NOPOS ) {
                              if (((Token)retval.stop)!=null) {
                                  pu.storeEnd(retval.tree, ((Token)retval.stop));
                              } else {
                                  Token t = input.LT(-1);
                                  if (t==null) {
                                      pu.storeEnd(retval.tree, 0);
                                  }
                              }
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 7, modifiers_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "modifiers"

    public static class variableModifiers_return extends ParserRuleReturnScope {
        public JCModifiers tree;
    };

    // $ANTLR start "variableModifiers"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:876:1: variableModifiers returns [JCModifiers tree] : (fin= 'final' | an= annotation )* ;
    public final JavaParser.variableModifiers_return variableModifiers() throws RecognitionException {
        JavaParser.variableModifiers_return retval = new JavaParser.variableModifiers_return();
        retval.start = input.LT(1);
        int variableModifiers_StartIndex = input.index();
        Token fin=null;
        JavaParser.annotation_return an = null;



                    ListBuffer<JCAnnotation> annotations = new ListBuffer<JCAnnotation>();
                    long flags = 0, flag = 0;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:888:5: ( (fin= 'final' | an= annotation )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:888:9: (fin= 'final' | an= annotation )*
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:888:9: (fin= 'final' | an= annotation )*
            loop14:
            do {
                int alt14=3;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==FINAL) ) {
                    alt14=1;
                }
                else if ( (LA14_0==MONKEYS_AT) ) {
                    alt14=2;
                }


                switch (alt14) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:888:13: fin= 'final'
            	    {
            	    fin=(Token)match(input,FINAL,FOLLOW_FINAL_in_variableModifiers1330); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                          flag = Flags.FINAL;
            	                          if ((flags & flag) != 0) {
            	                              log.error(((AntlrJavacToken)fin).getStartIndex(), "repeated.modifier");
            	                          }
            	                          flags |= flag;
            	                      
            	    }

            	    }
            	    break;
            	case 2 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:896:13: an= annotation
            	    {
            	    pushFollow(FOLLOW_annotation_in_variableModifiers1364);
            	    an=annotation();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                          annotations.append((an!=null?an.tree:null));
            	                      
            	    }

            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Modifiers(flags, annotations.toList());
                          if ((flags != 0 || annotations.isEmpty() == false) && ((Token)retval.stop) != null) {
                              pu.storeEnd(retval.tree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 8, variableModifiers_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "variableModifiers"


    // $ANTLR start "classDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:903:1: classDeclaration returns [JCClassDecl tree] : ( ( modifiers 'class' )=> normalClassDeclaration | enumDeclaration );
    public final JCClassDecl classDeclaration() throws RecognitionException {
        JCClassDecl tree = null;
        int classDeclaration_StartIndex = input.index();
        JavaParser.normalClassDeclaration_return normalClassDeclaration9 = null;

        JavaParser.enumDeclaration_return enumDeclaration10 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:904:5: ( ( modifiers 'class' )=> normalClassDeclaration | enumDeclaration )
            int alt15=2;
            alt15 = dfa15.predict(input);
            switch (alt15) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:904:9: ( modifiers 'class' )=> normalClassDeclaration
                    {
                    pushFollow(FOLLOW_normalClassDeclaration_in_classDeclaration1422);
                    normalClassDeclaration9=normalClassDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = (normalClassDeclaration9!=null?normalClassDeclaration9.tree:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:908:9: enumDeclaration
                    {
                    pushFollow(FOLLOW_enumDeclaration_in_classDeclaration1446);
                    enumDeclaration10=enumDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =(enumDeclaration10!=null?enumDeclaration10.tree:null);
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 9, classDeclaration_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "classDeclaration"

    public static class normalClassDeclaration_return extends ParserRuleReturnScope {
        public JCClassDecl tree;
    };

    // $ANTLR start "normalClassDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:914:1: normalClassDeclaration returns [JCClassDecl tree] : modifiers cla= 'class' IDENTIFIER ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody ;
    public final JavaParser.normalClassDeclaration_return normalClassDeclaration() throws RecognitionException {
        GScope_stack.push(new GScope_scope());

        JavaParser.normalClassDeclaration_return retval = new JavaParser.normalClassDeclaration_return();
        retval.start = input.LT(1);
        int normalClassDeclaration_StartIndex = input.index();
        Token cla=null;
        Token IDENTIFIER12=null;
        JavaParser.modifiers_return modifiers11 = null;

        com.sun.tools.javac.util.List<JCTypeParameter> typeParameters13 = null;

        JCExpression type14 = null;

        com.sun.tools.javac.util.List<JCExpression> typeList15 = null;

        JavaParser.classBody_return classBody16 = null;



                    Name name = null;
                    com.sun.tools.javac.util.List<JCTypeParameter> typarams = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCExpression> implementing = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTree> defs = null;
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCTree extending = null;
                    JCModifiers mods = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:931:5: ( modifiers cla= 'class' IDENTIFIER ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:931:9: modifiers cla= 'class' IDENTIFIER ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody
            {
            pushFollow(FOLLOW_modifiers_in_normalClassDeclaration1522);
            modifiers11=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            cla=(Token)match(input,CLASS,FOLLOW_CLASS_in_normalClassDeclaration1527); if (state.failed) return retval;
            IDENTIFIER12=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_normalClassDeclaration1529); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers11!=null?modifiers11.tree:null);
                              pos = ((AntlrJavacToken) cla).getStartIndex();
                              name = ((AntlrJavacToken) IDENTIFIER12).name;
                              ((GScope_scope)GScope_stack.peek()).name = name;
                              ((GScope_scope)GScope_stack.peek()).className =IDENTIFIER12.getText();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:939:9: ( typeParameters )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==LT) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:939:10: typeParameters
                    {
                    pushFollow(FOLLOW_typeParameters_in_normalClassDeclaration1554);
                    typeParameters13=typeParameters();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      typarams=typeParameters13;
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:944:9: ( 'extends' type )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==EXTENDS) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:944:10: 'extends' type
                    {
                    match(input,EXTENDS,FOLLOW_EXTENDS_in_normalClassDeclaration1590); if (state.failed) return retval;
                    pushFollow(FOLLOW_type_in_normalClassDeclaration1592);
                    type14=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      extending=type14;
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:949:9: ( 'implements' typeList )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==IMPLEMENTS) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:949:10: 'implements' typeList
                    {
                    match(input,IMPLEMENTS,FOLLOW_IMPLEMENTS_in_normalClassDeclaration1628); if (state.failed) return retval;
                    pushFollow(FOLLOW_typeList_in_normalClassDeclaration1630);
                    typeList15=typeList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      implementing=typeList15;
                                  
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_classBody_in_normalClassDeclaration1677);
            classBody16=classBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              defs = (classBody16!=null?classBody16.list:null);
                          
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).ClassDef(mods, name, typarams, extending, implementing, defs);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree,dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 10, normalClassDeclaration_StartIndex); }
            GScope_stack.pop();

        }
        return retval;
    }
    // $ANTLR end "normalClassDeclaration"


    // $ANTLR start "typeParameters"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:960:1: typeParameters returns [com.sun.tools.javac.util.List<JCTypeParameter> list] : lb= '<' ty1= typeParameter ( ',' ty2= typeParameter )* '>' ;
    public final com.sun.tools.javac.util.List<JCTypeParameter> typeParameters() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTypeParameter> list = null;
        int typeParameters_StartIndex = input.index();
        Token lb=null;
        JavaParser.typeParameter_return ty1 = null;

        JavaParser.typeParameter_return ty2 = null;



                    ListBuffer<JCTypeParameter> typarams = new ListBuffer<JCTypeParameter>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:967:5: (lb= '<' ty1= typeParameter ( ',' ty2= typeParameter )* '>' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:967:9: lb= '<' ty1= typeParameter ( ',' ty2= typeParameter )* '>'
            {
            lb=(Token)match(input,LT,FOLLOW_LT_in_typeParameters1742); if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              checkGeneric(lb);
                          
            }
            pushFollow(FOLLOW_typeParameter_in_typeParameters1772);
            ty1=typeParameter();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                                  typarams.append(ty1.tree);                    
                              
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:975:13: ( ',' ty2= typeParameter )*
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==COMMA) ) {
                    alt19=1;
                }


                switch (alt19) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:975:14: ',' ty2= typeParameter
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_typeParameters1805); if (state.failed) return list;
            	    pushFollow(FOLLOW_typeParameter_in_typeParameters1809);
            	    ty2=typeParameter();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                          typarams.append(ty2.tree);
            	                      
            	    }

            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);

            match(input,GT,FOLLOW_GT_in_typeParameters1852); if (state.failed) return list;

            }

            if ( state.backtracking==0 ) {

                          list =typarams.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 11, typeParameters_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "typeParameters"

    public static class typeParameter_return extends ParserRuleReturnScope {
        public JCTypeParameter tree;
    };

    // $ANTLR start "typeParameter"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:983:1: typeParameter returns [JCTypeParameter tree] : IDENTIFIER ( 'extends' typeBound )? ;
    public final JavaParser.typeParameter_return typeParameter() throws RecognitionException {
        JavaParser.typeParameter_return retval = new JavaParser.typeParameter_return();
        retval.start = input.LT(1);
        int typeParameter_StartIndex = input.index();
        Token IDENTIFIER17=null;
        com.sun.tools.javac.util.List<JCExpression> typeBound18 = null;



                    com.sun.tools.javac.util.List<JCExpression> bounds = com.sun.tools.javac.util.List.nil();
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                    Name name = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:993:5: ( IDENTIFIER ( 'extends' typeBound )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:993:9: IDENTIFIER ( 'extends' typeBound )?
            {
            IDENTIFIER17=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_typeParameter1901); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              name = ((AntlrJavacToken) IDENTIFIER17).name;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:997:9: ( 'extends' typeBound )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==EXTENDS) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:997:10: 'extends' typeBound
                    {
                    match(input,EXTENDS,FOLLOW_EXTENDS_in_typeParameter1926); if (state.failed) return retval;
                    pushFollow(FOLLOW_typeBound_in_typeParameter1928);
                    typeBound18=typeBound();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      bounds = typeBound18;
                                      pos = ((AntlrJavacToken) IDENTIFIER17).getStartIndex();
                                  
                    }

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).TypeParameter(name, bounds);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 12, typeParameter_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "typeParameter"


    // $ANTLR start "typeBound"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1005:1: typeBound returns [com.sun.tools.javac.util.List<JCExpression> list] : ty1= type ( '&' ty2= type )* ;
    public final com.sun.tools.javac.util.List<JCExpression> typeBound() throws RecognitionException {
        com.sun.tools.javac.util.List<JCExpression> list = null;
        int typeBound_StartIndex = input.index();
        JCExpression ty1 = null;

        JCExpression ty2 = null;



                    ListBuffer<JCExpression> bounds = new ListBuffer<JCExpression>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1012:5: (ty1= type ( '&' ty2= type )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1012:9: ty1= type ( '&' ty2= type )*
            {
            pushFollow(FOLLOW_type_in_typeBound2004);
            ty1=type();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              bounds.append(ty1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1016:9: ( '&' ty2= type )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==AMP) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1016:10: '&' ty2= type
            	    {
            	    match(input,AMP,FOLLOW_AMP_in_typeBound2029); if (state.failed) return list;
            	    pushFollow(FOLLOW_type_in_typeBound2033);
            	    ty2=type();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      bounds.append(ty2);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = bounds.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 13, typeBound_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "typeBound"

    public static class enumDeclaration_return extends ParserRuleReturnScope {
        public JCClassDecl tree;
    };

    // $ANTLR start "enumDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1023:1: enumDeclaration returns [JCClassDecl tree] : modifiers (enu= 'enum' | {...}? =>id1= IDENTIFIER ) enumName= IDENTIFIER ( 'implements' typeList )? enumBody ;
    public final JavaParser.enumDeclaration_return enumDeclaration() throws RecognitionException {
        GScope_stack.push(new GScope_scope());

        JavaParser.enumDeclaration_return retval = new JavaParser.enumDeclaration_return();
        retval.start = input.LT(1);
        int enumDeclaration_StartIndex = input.index();
        Token enu=null;
        Token id1=null;
        Token enumName=null;
        JavaParser.modifiers_return modifiers19 = null;

        com.sun.tools.javac.util.List<JCExpression> typeList20 = null;

        com.sun.tools.javac.util.List<JCTree> enumBody21 = null;



                    com.sun.tools.javac.util.List<JCExpression> implementing = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTree> defs = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCModifiers mods = null;
                    Name name = null;
                    int pos1=0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1040:5: ( modifiers (enu= 'enum' | {...}? =>id1= IDENTIFIER ) enumName= IDENTIFIER ( 'implements' typeList )? enumBody )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1040:9: modifiers (enu= 'enum' | {...}? =>id1= IDENTIFIER ) enumName= IDENTIFIER ( 'implements' typeList )? enumBody
            {
            pushFollow(FOLLOW_modifiers_in_enumDeclaration2120);
            modifiers19=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1041:9: (enu= 'enum' | {...}? =>id1= IDENTIFIER )
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==ENUM) ) {
                alt22=1;
            }
            else if ( (LA22_0==IDENTIFIER) && ((source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) {
                alt22=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }
            switch (alt22) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1041:14: enu= 'enum'
                    {
                    enu=(Token)match(input,ENUM,FOLLOW_ENUM_in_enumDeclaration2138); if (state.failed) return retval;

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1042:14: {...}? =>id1= IDENTIFIER
                    {
                    if ( !((source.allowEnums()==false&&input.LT(1).getText().equals("enum"))) ) {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        throw new FailedPredicateException(input, "enumDeclaration", "source.allowEnums()==false&&input.LT(1).getText().equals(\"enum\")");
                    }
                    id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_enumDeclaration2158); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          checkEnum(id1);
                                      
                    }

                    }
                    break;

            }

            enumName=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_enumDeclaration2200); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers19!=null?modifiers19.tree:null);
                              if(enu != null){
                                  pos1 = ((AntlrJavacToken) enu).getStartIndex();
                              }else{
                                  pos1 = ((AntlrJavacToken) id1).getStartIndex();
                              }
                              name = ((AntlrJavacToken) enumName).name;
                              ((GScope_scope)GScope_stack.peek()).name = name;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1058:9: ( 'implements' typeList )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==IMPLEMENTS) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1058:10: 'implements' typeList
                    {
                    match(input,IMPLEMENTS,FOLLOW_IMPLEMENTS_in_enumDeclaration2225); if (state.failed) return retval;
                    pushFollow(FOLLOW_typeList_in_enumDeclaration2227);
                    typeList20=typeList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      implementing = typeList20;
                                  
                    }

                    }
                    break;

            }

            if ( state.backtracking==0 ) {

                              ((GScope_scope)GScope_stack.peek()).className =enumName.getText();
                          
            }
            pushFollow(FOLLOW_enumBody_in_enumDeclaration2276);
            enumBody21=enumBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              defs = enumBody21;
                          
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          JCModifiers newMods = T.at(pos).Modifiers(mods.flags | Flags.ENUM, mods.annotations);
                          retval.tree = T.at(pos1).ClassDef(newMods, name, com.sun.tools.javac.util.List.<JCTypeParameter>nil(), null, implementing,defs);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree, dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 14, enumDeclaration_StartIndex); }
            GScope_stack.pop();

        }
        return retval;
    }
    // $ANTLR end "enumDeclaration"


    // $ANTLR start "enumBody"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1072:1: enumBody returns [com.sun.tools.javac.util.List<JCTree> list] : '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' ;
    public final com.sun.tools.javac.util.List<JCTree> enumBody() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int enumBody_StartIndex = input.index();
        com.sun.tools.javac.util.List<JCTree> enumConstants22 = null;

        com.sun.tools.javac.util.List<JCTree> enumBodyDeclarations23 = null;



                    com.sun.tools.javac.util.ListBuffer<JCTree> buf = new com.sun.tools.javac.util.ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1079:5: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1079:9: '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}'
            {
            match(input,LBRACE,FOLLOW_LBRACE_in_enumBody2339); if (state.failed) return list;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1079:12: ( enumConstants )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==IDENTIFIER||LA24_0==MONKEYS_AT) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1079:13: enumConstants
                    {
                    pushFollow(FOLLOW_enumConstants_in_enumBody2341);
                    enumConstants22=enumConstants();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.appendList(enumConstants22);
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1083:12: ( ',' )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==COMMA) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:0:0: ','
                    {
                    match(input,COMMA,FOLLOW_COMMA_in_enumBody2368); if (state.failed) return list;

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1083:17: ( enumBodyDeclarations )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==SEMI) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1083:18: enumBodyDeclarations
                    {
                    pushFollow(FOLLOW_enumBodyDeclarations_in_enumBody2372);
                    enumBodyDeclarations23=enumBodyDeclarations();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.appendList(enumBodyDeclarations23);
                                  
                    }

                    }
                    break;

            }

            match(input,RBRACE,FOLLOW_RBRACE_in_enumBody2399); if (state.failed) return list;

            }

            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 15, enumBody_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "enumBody"


    // $ANTLR start "enumConstants"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1090:1: enumConstants returns [com.sun.tools.javac.util.List<JCTree> list] : en1= enumConstant ( ',' en2= enumConstant )* ;
    public final com.sun.tools.javac.util.List<JCTree> enumConstants() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int enumConstants_StartIndex = input.index();
        JavaParser.enumConstant_return en1 = null;

        JavaParser.enumConstant_return en2 = null;



                    ListBuffer<JCTree> buf = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1097:5: (en1= enumConstant ( ',' en2= enumConstant )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1097:9: en1= enumConstant ( ',' en2= enumConstant )*
            {
            pushFollow(FOLLOW_enumConstant_in_enumConstants2450);
            en1=enumConstant();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              buf.append((en1!=null?en1.tree:null));
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1101:9: ( ',' en2= enumConstant )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==COMMA) ) {
                    int LA27_1 = input.LA(2);

                    if ( (LA27_1==IDENTIFIER||LA27_1==MONKEYS_AT) ) {
                        alt27=1;
                    }


                }


                switch (alt27) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1101:10: ',' en2= enumConstant
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_enumConstants2475); if (state.failed) return list;
            	    pushFollow(FOLLOW_enumConstant_in_enumConstants2479);
            	    en2=enumConstant();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      buf.append((en2!=null?en2.tree:null));
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 16, enumConstants_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "enumConstants"

    public static class enumConstant_return extends ParserRuleReturnScope {
        public JCTree tree;
    };

    // $ANTLR start "enumConstant"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1108:1: enumConstant returns [JCTree tree] : ( annotations )? IDENTIFIER ( arguments )? ( classBody )? ;
    public final JavaParser.enumConstant_return enumConstant() throws RecognitionException {
        JavaParser.enumConstant_return retval = new JavaParser.enumConstant_return();
        retval.start = input.LT(1);
        int enumConstant_StartIndex = input.index();
        Token IDENTIFIER25=null;
        JavaParser.annotations_return annotations24 = null;

        JavaParser.arguments_return arguments26 = null;

        JavaParser.classBody_return classBody27 = null;



                    int flags = Flags.PUBLIC | Flags.STATIC | Flags.FINAL | Flags.ENUM;
                    if (((AntlrJavacToken) ((Token)retval.start)).deprecated == true) {
                        flags |= Flags.DEPRECATED;
                    }
                    com.sun.tools.javac.util.List<JCAnnotation> annotations = com.sun.tools.javac.util.List.nil();;
                    com.sun.tools.javac.util.List<JCExpression> typeArgs = com.sun.tools.javac.util.List.nil();;
                    com.sun.tools.javac.util.List<JCExpression> args = com.sun.tools.javac.util.List.nil();;
                    com.sun.tools.javac.util.List<JCTree> defs = null;
                    JCIdent enumIdent = T.at(Position.NOPOS).Ident(((GScope_scope)GScope_stack.peek()).name);
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                    int identPos = 0, createPos = Position.NOPOS;
                    JCModifiers mods = null;
                    Name name = null;
                    JCClassDecl body = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1148:5: ( ( annotations )? IDENTIFIER ( arguments )? ( classBody )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1148:9: ( annotations )? IDENTIFIER ( arguments )? ( classBody )?
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1148:9: ( annotations )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==MONKEYS_AT) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1148:10: annotations
                    {
                    pushFollow(FOLLOW_annotations_in_enumConstant2556);
                    annotations24=annotations();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      annotations = (annotations24!=null?annotations24.list:null);
                                  
                    }

                    }
                    break;

            }

            IDENTIFIER25=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_enumConstant2591); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              name = ((AntlrJavacToken) IDENTIFIER25).name;
                              identPos = ((AntlrJavacToken) IDENTIFIER25).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1158:9: ( arguments )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==LPAREN) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1158:10: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_enumConstant2616);
                    arguments26=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      args = (arguments26!=null?arguments26.list:null);
                                      createPos = ((AntlrJavacToken) (arguments26!=null?((Token)arguments26.start):null)).getStartIndex();
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1164:9: ( classBody )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==LBRACE) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1164:10: classBody
                    {
                    pushFollow(FOLLOW_classBody_in_enumConstant2652);
                    classBody27=classBody();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      defs = (classBody27!=null?classBody27.list:null);
                                      if (createPos == Position.NOPOS)
                                          createPos = ((AntlrJavacToken) (classBody27!=null?((Token)classBody27.start):null)).getStartIndex();
                                  
                    }

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          mods = T.at(annotations.isEmpty() ? Position.NOPOS : pos).Modifiers(flags, annotations);
                          if (defs != null) {
                              JCModifiers mods1 = T.at(Position.NOPOS).Modifiers(Flags.ENUM | Flags.STATIC);
                              body = T.at(identPos).AnonymousClassDef(mods1, defs);
                              pu.storeEnd(body, ((Token)retval.stop));
                          }
                          if (args.isEmpty() == true && defs == null) {
                              createPos = Position.NOPOS;
                          }
                          JCNewClass create = T.at(createPos).NewClass(null, typeArgs, enumIdent, args, body);
                          if (createPos != Position.NOPOS) {
                              pu.storeEnd(create, ((Token)retval.stop));
                          }
                          retval.tree = T.at(pos).VarDef(mods, name, enumIdent, create);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree, dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 17, enumConstant_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "enumConstant"


    // $ANTLR start "enumBodyDeclarations"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1175:1: enumBodyDeclarations returns [com.sun.tools.javac.util.List<JCTree> list] : ';' ( classBodyDeclaration )* ;
    public final com.sun.tools.javac.util.List<JCTree> enumBodyDeclarations() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int enumBodyDeclarations_StartIndex = input.index();
        com.sun.tools.javac.util.List<JCTree> classBodyDeclaration28 = null;



                    ListBuffer<JCTree> buf = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1182:5: ( ';' ( classBodyDeclaration )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1182:9: ';' ( classBodyDeclaration )*
            {
            match(input,SEMI,FOLLOW_SEMI_in_enumBodyDeclarations2736); if (state.failed) return list;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1182:13: ( classBodyDeclaration )*
            loop31:
            do {
                int alt31=2;
                int LA31_0 = input.LA(1);

                if ( ((LA31_0>=IDENTIFIER && LA31_0<=ABSTRACT)||LA31_0==BOOLEAN||LA31_0==BYTE||(LA31_0>=CHAR && LA31_0<=CLASS)||LA31_0==DOUBLE||LA31_0==ENUM||LA31_0==FINAL||LA31_0==FLOAT||(LA31_0>=INT && LA31_0<=NATIVE)||(LA31_0>=PRIVATE && LA31_0<=PUBLIC)||(LA31_0>=SHORT && LA31_0<=STRICTFP)||LA31_0==SYNCHRONIZED||LA31_0==TRANSIENT||(LA31_0>=VOID && LA31_0<=VOLATILE)||LA31_0==LBRACE||LA31_0==SEMI||LA31_0==LT||LA31_0==MONKEYS_AT) ) {
                    alt31=1;
                }


                switch (alt31) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1182:14: classBodyDeclaration
            	    {
            	    pushFollow(FOLLOW_classBodyDeclaration_in_enumBodyDeclarations2739);
            	    classBodyDeclaration28=classBodyDeclaration();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      buf.appendList(classBodyDeclaration28);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop31;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 18, enumBodyDeclarations_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "enumBodyDeclarations"


    // $ANTLR start "interfaceDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1189:1: interfaceDeclaration returns [JCClassDecl tree] : ( ( interfaceHeader )=> normalInterfaceDeclaration | ( annotationHeader )=> annotationTypeDeclaration );
    public final JCClassDecl interfaceDeclaration() throws RecognitionException {
        JCClassDecl tree = null;
        int interfaceDeclaration_StartIndex = input.index();
        JavaParser.normalInterfaceDeclaration_return normalInterfaceDeclaration29 = null;

        JavaParser.annotationTypeDeclaration_return annotationTypeDeclaration30 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1190:5: ( ( interfaceHeader )=> normalInterfaceDeclaration | ( annotationHeader )=> annotationTypeDeclaration )
            int alt32=2;
            alt32 = dfa32.predict(input);
            switch (alt32) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1190:9: ( interfaceHeader )=> normalInterfaceDeclaration
                    {
                    pushFollow(FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration2791);
                    normalInterfaceDeclaration29=normalInterfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = (normalInterfaceDeclaration29!=null?normalInterfaceDeclaration29.tree:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1194:9: ( annotationHeader )=> annotationTypeDeclaration
                    {
                    pushFollow(FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration2819);
                    annotationTypeDeclaration30=annotationTypeDeclaration();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = (annotationTypeDeclaration30!=null?annotationTypeDeclaration30.tree:null);
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 19, interfaceDeclaration_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "interfaceDeclaration"

    public static class normalInterfaceDeclaration_return extends ParserRuleReturnScope {
        public JCClassDecl tree;
    };

    // $ANTLR start "normalInterfaceDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1200:1: normalInterfaceDeclaration returns [JCClassDecl tree] : modifiers inf= 'interface' IDENTIFIER ( typeParameters )? ( 'extends' typeList )? interfaceBody ;
    public final JavaParser.normalInterfaceDeclaration_return normalInterfaceDeclaration() throws RecognitionException {
        GScope_stack.push(new GScope_scope());

        JavaParser.normalInterfaceDeclaration_return retval = new JavaParser.normalInterfaceDeclaration_return();
        retval.start = input.LT(1);
        int normalInterfaceDeclaration_StartIndex = input.index();
        Token inf=null;
        Token IDENTIFIER32=null;
        JavaParser.modifiers_return modifiers31 = null;

        com.sun.tools.javac.util.List<JCTypeParameter> typeParameters33 = null;

        com.sun.tools.javac.util.List<JCExpression> typeList34 = null;

        com.sun.tools.javac.util.List<JCTree> interfaceBody35 = null;



                    com.sun.tools.javac.util.List<JCTypeParameter> typarams = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCExpression> extending = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTree> defs = null;
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCModifiers mods = null;
                    Name name = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1216:5: ( modifiers inf= 'interface' IDENTIFIER ( typeParameters )? ( 'extends' typeList )? interfaceBody )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1216:9: modifiers inf= 'interface' IDENTIFIER ( typeParameters )? ( 'extends' typeList )? interfaceBody
            {
            pushFollow(FOLLOW_modifiers_in_normalInterfaceDeclaration2895);
            modifiers31=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            inf=(Token)match(input,INTERFACE,FOLLOW_INTERFACE_in_normalInterfaceDeclaration2899); if (state.failed) return retval;
            IDENTIFIER32=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_normalInterfaceDeclaration2901); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers31!=null?modifiers31.tree:null);
                              name = ((AntlrJavacToken) IDENTIFIER32).name;
                              pos = ((AntlrJavacToken) inf).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1222:9: ( typeParameters )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==LT) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1222:10: typeParameters
                    {
                    pushFollow(FOLLOW_typeParameters_in_normalInterfaceDeclaration2926);
                    typeParameters33=typeParameters();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      typarams = typeParameters33;
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1227:9: ( 'extends' typeList )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==EXTENDS) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1227:10: 'extends' typeList
                    {
                    match(input,EXTENDS,FOLLOW_EXTENDS_in_normalInterfaceDeclaration2962); if (state.failed) return retval;
                    pushFollow(FOLLOW_typeList_in_normalInterfaceDeclaration2964);
                    typeList34=typeList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      extending = typeList34;
                                  
                    }

                    }
                    break;

            }

            if ( state.backtracking==0 ) {

                              ((GScope_scope)GScope_stack.peek()).className =IDENTIFIER32.getText();
                          
            }
            pushFollow(FOLLOW_interfaceBody_in_normalInterfaceDeclaration3013);
            interfaceBody35=interfaceBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              defs = interfaceBody35;
                          
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).ClassDef(mods, name, typarams, null, extending, defs);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree,dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 20, normalInterfaceDeclaration_StartIndex); }
            GScope_stack.pop();

        }
        return retval;
    }
    // $ANTLR end "normalInterfaceDeclaration"


    // $ANTLR start "typeList"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1241:1: typeList returns [com.sun.tools.javac.util.List<JCExpression> list] : ty1= type ( ',' ty2= type )* ;
    public final com.sun.tools.javac.util.List<JCExpression> typeList() throws RecognitionException {
        com.sun.tools.javac.util.List<JCExpression> list = null;
        int typeList_StartIndex = input.index();
        JCExpression ty1 = null;

        JCExpression ty2 = null;



                    ListBuffer<JCExpression> ts = new ListBuffer<JCExpression>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1248:5: (ty1= type ( ',' ty2= type )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1248:9: ty1= type ( ',' ty2= type )*
            {
            pushFollow(FOLLOW_type_in_typeList3090);
            ty1=type();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              ts.append(ty1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1252:9: ( ',' ty2= type )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( (LA35_0==COMMA) ) {
                    alt35=1;
                }


                switch (alt35) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1252:10: ',' ty2= type
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_typeList3115); if (state.failed) return list;
            	    pushFollow(FOLLOW_type_in_typeList3119);
            	    ty2=type();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      ts.append(ty2);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = ts.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 21, typeList_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "typeList"

    public static class classBody_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCTree> list;
    };

    // $ANTLR start "classBody"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1259:1: classBody returns [com.sun.tools.javac.util.List<JCTree> list] : '{' ( classBodyDeclaration )* '}' ;
    public final JavaParser.classBody_return classBody() throws RecognitionException {
        JavaParser.classBody_return retval = new JavaParser.classBody_return();
        retval.start = input.LT(1);
        int classBody_StartIndex = input.index();
        com.sun.tools.javac.util.List<JCTree> classBodyDeclaration36 = null;



                    ListBuffer<JCTree> defs = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1266:5: ( '{' ( classBodyDeclaration )* '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1266:9: '{' ( classBodyDeclaration )* '}'
            {
            match(input,LBRACE,FOLLOW_LBRACE_in_classBody3193); if (state.failed) return retval;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1266:13: ( classBodyDeclaration )*
            loop36:
            do {
                int alt36=2;
                int LA36_0 = input.LA(1);

                if ( ((LA36_0>=IDENTIFIER && LA36_0<=ABSTRACT)||LA36_0==BOOLEAN||LA36_0==BYTE||(LA36_0>=CHAR && LA36_0<=CLASS)||LA36_0==DOUBLE||LA36_0==ENUM||LA36_0==FINAL||LA36_0==FLOAT||(LA36_0>=INT && LA36_0<=NATIVE)||(LA36_0>=PRIVATE && LA36_0<=PUBLIC)||(LA36_0>=SHORT && LA36_0<=STRICTFP)||LA36_0==SYNCHRONIZED||LA36_0==TRANSIENT||(LA36_0>=VOID && LA36_0<=VOLATILE)||LA36_0==LBRACE||LA36_0==SEMI||LA36_0==LT||LA36_0==MONKEYS_AT) ) {
                    alt36=1;
                }


                switch (alt36) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1266:14: classBodyDeclaration
            	    {
            	    pushFollow(FOLLOW_classBodyDeclaration_in_classBody3196);
            	    classBodyDeclaration36=classBodyDeclaration();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      defs.appendList(classBodyDeclaration36);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop36;
                }
            } while (true);

            match(input,RBRACE,FOLLOW_RBRACE_in_classBody3223); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = defs.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 22, classBody_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "classBody"


    // $ANTLR start "interfaceBody"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1273:1: interfaceBody returns [com.sun.tools.javac.util.List<JCTree> list] : '{' ( interfaceBodyDeclaration )* '}' ;
    public final com.sun.tools.javac.util.List<JCTree> interfaceBody() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int interfaceBody_StartIndex = input.index();
        com.sun.tools.javac.util.List<JCTree> interfaceBodyDeclaration37 = null;



                    ListBuffer<JCTree> defs = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1280:5: ( '{' ( interfaceBodyDeclaration )* '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1280:9: '{' ( interfaceBodyDeclaration )* '}'
            {
            match(input,LBRACE,FOLLOW_LBRACE_in_interfaceBody3272); if (state.failed) return list;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1280:13: ( interfaceBodyDeclaration )*
            loop37:
            do {
                int alt37=2;
                int LA37_0 = input.LA(1);

                if ( ((LA37_0>=IDENTIFIER && LA37_0<=ABSTRACT)||LA37_0==BOOLEAN||LA37_0==BYTE||(LA37_0>=CHAR && LA37_0<=CLASS)||LA37_0==DOUBLE||LA37_0==ENUM||LA37_0==FINAL||LA37_0==FLOAT||(LA37_0>=INT && LA37_0<=NATIVE)||(LA37_0>=PRIVATE && LA37_0<=PUBLIC)||(LA37_0>=SHORT && LA37_0<=STRICTFP)||LA37_0==SYNCHRONIZED||LA37_0==TRANSIENT||(LA37_0>=VOID && LA37_0<=VOLATILE)||LA37_0==SEMI||LA37_0==LT||LA37_0==MONKEYS_AT) ) {
                    alt37=1;
                }


                switch (alt37) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1280:14: interfaceBodyDeclaration
            	    {
            	    pushFollow(FOLLOW_interfaceBodyDeclaration_in_interfaceBody3275);
            	    interfaceBodyDeclaration37=interfaceBodyDeclaration();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      defs.appendList(interfaceBodyDeclaration37);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop37;
                }
            } while (true);

            match(input,RBRACE,FOLLOW_RBRACE_in_interfaceBody3302); if (state.failed) return list;

            }

            if ( state.backtracking==0 ) {

                          list = defs.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 23, interfaceBody_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "interfaceBody"


    // $ANTLR start "classBodyDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1287:1: classBodyDeclaration returns [com.sun.tools.javac.util.List<JCTree> list] : ( ';' | st= staticBlock | bl= block | me= memberDecl );
    public final com.sun.tools.javac.util.List<JCTree> classBodyDeclaration() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int classBodyDeclaration_StartIndex = input.index();
        JavaParser.staticBlock_return st = null;

        JavaParser.block_return bl = null;

        com.sun.tools.javac.util.List<JCTree> me = null;



                    ListBuffer<JCTree> buf = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1294:5: ( ';' | st= staticBlock | bl= block | me= memberDecl )
            int alt38=4;
            switch ( input.LA(1) ) {
            case SEMI:
                {
                alt38=1;
                }
                break;
            case STATIC:
                {
                int LA38_2 = input.LA(2);

                if ( (LA38_2==LBRACE) ) {
                    alt38=2;
                }
                else if ( ((LA38_2>=IDENTIFIER && LA38_2<=ABSTRACT)||LA38_2==BOOLEAN||LA38_2==BYTE||(LA38_2>=CHAR && LA38_2<=CLASS)||LA38_2==DOUBLE||LA38_2==ENUM||LA38_2==FINAL||LA38_2==FLOAT||(LA38_2>=INT && LA38_2<=NATIVE)||(LA38_2>=PRIVATE && LA38_2<=PUBLIC)||(LA38_2>=SHORT && LA38_2<=STRICTFP)||LA38_2==SYNCHRONIZED||LA38_2==TRANSIENT||(LA38_2>=VOID && LA38_2<=VOLATILE)||LA38_2==LT||LA38_2==MONKEYS_AT) ) {
                    alt38=4;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return list;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 38, 2, input);

                    throw nvae;
                }
                }
                break;
            case LBRACE:
                {
                alt38=3;
                }
                break;
            case IDENTIFIER:
            case ABSTRACT:
            case BOOLEAN:
            case BYTE:
            case CHAR:
            case CLASS:
            case DOUBLE:
            case ENUM:
            case FINAL:
            case FLOAT:
            case INT:
            case INTERFACE:
            case LONG:
            case NATIVE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case SHORT:
            case STRICTFP:
            case SYNCHRONIZED:
            case TRANSIENT:
            case VOID:
            case VOLATILE:
            case LT:
            case MONKEYS_AT:
                {
                alt38=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return list;}
                NoViableAltException nvae =
                    new NoViableAltException("", 38, 0, input);

                throw nvae;
            }

            switch (alt38) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1294:9: ';'
                    {
                    match(input,SEMI,FOLLOW_SEMI_in_classBodyDeclaration3351); if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(T.at(Position.NOPOS).Block(0, com.sun.tools.javac.util.List.<JCStatement> nil()));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1298:9: st= staticBlock
                    {
                    pushFollow(FOLLOW_staticBlock_in_classBodyDeclaration3377);
                    st=staticBlock();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((st!=null?st.tree:null));
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1302:9: bl= block
                    {
                    pushFollow(FOLLOW_block_in_classBodyDeclaration3403);
                    bl=block();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((bl!=null?bl.tree:null));
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1306:9: me= memberDecl
                    {
                    pushFollow(FOLLOW_memberDecl_in_classBodyDeclaration3429);
                    me=memberDecl();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.appendList(me);
                                  
                    }

                    }
                    break;

            }
            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 24, classBodyDeclaration_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "classBodyDeclaration"


    // $ANTLR start "memberDecl"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1312:1: memberDecl returns [com.sun.tools.javac.util.List<JCTree> list] : ( ( fieldHeader )=> fieldDeclaration | ( methodHeader )=> methodDeclaration | ( classHeader | enumHeader )=> classDeclaration | ( interfaceHeader | annotationHeader )=> interfaceDeclaration );
    public final com.sun.tools.javac.util.List<JCTree> memberDecl() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int memberDecl_StartIndex = input.index();
        JavaParser.fieldDeclaration_return fieldDeclaration38 = null;

        JavaParser.methodDeclaration_return methodDeclaration39 = null;

        JCClassDecl classDeclaration40 = null;

        JCClassDecl interfaceDeclaration41 = null;



                    ListBuffer<JCTree> buf = new ListBuffer<JCTree>();
                    list = com.sun.tools.javac.util.List.nil();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1320:5: ( ( fieldHeader )=> fieldDeclaration | ( methodHeader )=> methodDeclaration | ( classHeader | enumHeader )=> classDeclaration | ( interfaceHeader | annotationHeader )=> interfaceDeclaration )
            int alt39=4;
            alt39 = dfa39.predict(input);
            switch (alt39) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1320:9: ( fieldHeader )=> fieldDeclaration
                    {
                    pushFollow(FOLLOW_fieldDeclaration_in_memberDecl3499);
                    fieldDeclaration38=fieldDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      pu.appendList(buf, (fieldDeclaration38!=null?fieldDeclaration38.list:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1324:9: ( methodHeader )=> methodDeclaration
                    {
                    pushFollow(FOLLOW_methodDeclaration_in_memberDecl3529);
                    methodDeclaration39=methodDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((methodDeclaration39!=null?methodDeclaration39.tree:null));
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1328:9: ( classHeader | enumHeader )=> classDeclaration
                    {
                    pushFollow(FOLLOW_classDeclaration_in_memberDecl3563);
                    classDeclaration40=classDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(classDeclaration40);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1332:9: ( interfaceHeader | annotationHeader )=> interfaceDeclaration
                    {
                    pushFollow(FOLLOW_interfaceDeclaration_in_memberDecl3597);
                    interfaceDeclaration41=interfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(interfaceDeclaration41);
                                  
                    }

                    }
                    break;

            }
            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 25, memberDecl_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "memberDecl"

    public static class methodDeclaration_return extends ParserRuleReturnScope {
        public JCMethodDecl tree;
    };

    // $ANTLR start "methodDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1338:1: methodDeclaration returns [JCMethodDecl tree] : ( ( modifiers ( typeParameters )? IDENTIFIER '(' )=>mo2= modifiers (ty2= typeParameters )? id2= IDENTIFIER fo2= formalParameters ( 'throws' qu2= qualifiedNameList )? lbr= '{' (ex1= explicitConstructorInvocation )? (bl2= blockStatement )* rbr= '}' | mo1= modifiers (ty1= typeParameters )? (ty= type | vod= 'void' ) id1= IDENTIFIER fo1= formalParameters (lb= '[' rb= ']' )* ( 'throws' qu1= qualifiedNameList )? (bl= block | ';' ) );
    public final JavaParser.methodDeclaration_return methodDeclaration() throws RecognitionException {
        JavaParser.methodDeclaration_return retval = new JavaParser.methodDeclaration_return();
        retval.start = input.LT(1);
        int methodDeclaration_StartIndex = input.index();
        Token id2=null;
        Token lbr=null;
        Token rbr=null;
        Token vod=null;
        Token id1=null;
        Token lb=null;
        Token rb=null;
        JavaParser.modifiers_return mo2 = null;

        com.sun.tools.javac.util.List<JCTypeParameter> ty2 = null;

        com.sun.tools.javac.util.List<JCVariableDecl> fo2 = null;

        com.sun.tools.javac.util.List<JCExpression> qu2 = null;

        JavaParser.explicitConstructorInvocation_return ex1 = null;

        JavaParser.blockStatement_return bl2 = null;

        JavaParser.modifiers_return mo1 = null;

        com.sun.tools.javac.util.List<JCTypeParameter> ty1 = null;

        JCExpression ty = null;

        com.sun.tools.javac.util.List<JCVariableDecl> fo1 = null;

        com.sun.tools.javac.util.List<JCExpression> qu1 = null;

        JavaParser.block_return bl = null;



                    com.sun.tools.javac.util.List<JCVariableDecl> params = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTypeParameter> typarams = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCExpression> thrown = com.sun.tools.javac.util.List.nil();
                    ListBuffer<JCStatement> ctors = new ListBuffer<JCStatement>();
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    ArrayList<Integer> poss = new ArrayList<Integer>();
                    ArrayList<Integer> eposs = new ArrayList<Integer>();
                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    JCBlock body = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1363:5: ( ( modifiers ( typeParameters )? IDENTIFIER '(' )=>mo2= modifiers (ty2= typeParameters )? id2= IDENTIFIER fo2= formalParameters ( 'throws' qu2= qualifiedNameList )? lbr= '{' (ex1= explicitConstructorInvocation )? (bl2= blockStatement )* rbr= '}' | mo1= modifiers (ty1= typeParameters )? (ty= type | vod= 'void' ) id1= IDENTIFIER fo1= formalParameters (lb= '[' rb= ']' )* ( 'throws' qu1= qualifiedNameList )? (bl= block | ';' ) )
            int alt49=2;
            alt49 = dfa49.predict(input);
            switch (alt49) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1365:9: ( modifiers ( typeParameters )? IDENTIFIER '(' )=>mo2= modifiers (ty2= typeParameters )? id2= IDENTIFIER fo2= formalParameters ( 'throws' qu2= qualifiedNameList )? lbr= '{' (ex1= explicitConstructorInvocation )? (bl2= blockStatement )* rbr= '}'
                    {
                    pushFollow(FOLLOW_modifiers_in_methodDeclaration3699);
                    mo2=modifiers();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      mods = (mo2!=null?mo2.tree:null);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1369:9: (ty2= typeParameters )?
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( (LA40_0==LT) ) {
                        alt40=1;
                    }
                    switch (alt40) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1369:10: ty2= typeParameters
                            {
                            pushFollow(FOLLOW_typeParameters_in_methodDeclaration3726);
                            ty2=typeParameters();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              typarams = ty2;
                                          
                            }

                            }
                            break;

                    }

                    id2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodDeclaration3763); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      Name tname = ((GScope_scope)GScope_stack.peek()).name;
                                      if (((AntlrJavacToken) id2).name != tname) {
                                          log.error(((AntlrJavacToken)id2).getStartIndex(), "invalid.meth.decl.ret.type.req");
                                      }
                                      type = null;
                                      name = names.init;
                                      pos = ((AntlrJavacToken) id2).getStartIndex();
                                      pu.storeEnd(T.Ident(((AntlrJavacToken) id2).name), id2);
                                  
                    }
                    pushFollow(FOLLOW_formalParameters_in_methodDeclaration3789);
                    fo2=formalParameters();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      params = fo2;
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1389:9: ( 'throws' qu2= qualifiedNameList )?
                    int alt41=2;
                    int LA41_0 = input.LA(1);

                    if ( (LA41_0==THROWS) ) {
                        alt41=1;
                    }
                    switch (alt41) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1389:10: 'throws' qu2= qualifiedNameList
                            {
                            match(input,THROWS,FOLLOW_THROWS_in_methodDeclaration3814); if (state.failed) return retval;
                            pushFollow(FOLLOW_qualifiedNameList_in_methodDeclaration3818);
                            qu2=qualifiedNameList();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              thrown = qu2;
                                          
                            }

                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {

                                      ((GScope_scope)GScope_stack.peek()).methodName =id2.getText();
                                  
                    }
                    lbr=(Token)match(input,LBRACE,FOLLOW_LBRACE_in_methodDeclaration3869); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1398:9: (ex1= explicitConstructorInvocation )?
                    int alt42=2;
                    alt42 = dfa42.predict(input);
                    switch (alt42) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1398:10: ex1= explicitConstructorInvocation
                            {
                            pushFollow(FOLLOW_explicitConstructorInvocation_in_methodDeclaration3883);
                            ex1=explicitConstructorInvocation();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  ctors.append((ex1!=null?ex1.tree:null));
                                              
                            }

                            }
                            break;

                    }

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1403:9: (bl2= blockStatement )*
                    loop43:
                    do {
                        int alt43=2;
                        int LA43_0 = input.LA(1);

                        if ( ((LA43_0>=IDENTIFIER && LA43_0<=BYTE)||(LA43_0>=CHAR && LA43_0<=CLASS)||LA43_0==CONTINUE||(LA43_0>=DO && LA43_0<=DOUBLE)||LA43_0==ENUM||LA43_0==FINAL||(LA43_0>=FLOAT && LA43_0<=FOR)||LA43_0==IF||(LA43_0>=INT && LA43_0<=NEW)||(LA43_0>=PRIVATE && LA43_0<=THROW)||(LA43_0>=TRANSIENT && LA43_0<=LPAREN)||LA43_0==LBRACE||LA43_0==SEMI||(LA43_0>=BANG && LA43_0<=TILDE)||(LA43_0>=PLUSPLUS && LA43_0<=SUB)||LA43_0==MONKEYS_AT||LA43_0==VAR) ) {
                            alt43=1;
                        }


                        switch (alt43) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1403:10: bl2= blockStatement
                    	    {
                    	    pushFollow(FOLLOW_blockStatement_in_methodDeclaration3925);
                    	    bl2=blockStatement();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      if ((bl2!=null?bl2.tree:null) == null) {
                    	                          ctors.appendList((bl2!=null?bl2.list:null));
                    	                      } else {
                    	                          ctors.append((bl2!=null?bl2.tree:null));
                    	                      }
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop43;
                        }
                    } while (true);

                    rbr=(Token)match(input,RBRACE,FOLLOW_RBRACE_in_methodDeclaration3962); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      body = T.at(((AntlrJavacToken) lbr).getStartIndex()).Block(0, ctors.toList());
                                      pu.storeEnd(body,rbr);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1417:9: mo1= modifiers (ty1= typeParameters )? (ty= type | vod= 'void' ) id1= IDENTIFIER fo1= formalParameters (lb= '[' rb= ']' )* ( 'throws' qu1= qualifiedNameList )? (bl= block | ';' )
                    {
                    pushFollow(FOLLOW_modifiers_in_methodDeclaration3988);
                    mo1=modifiers();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      mods = (mo1!=null?mo1.tree:null);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1421:9: (ty1= typeParameters )?
                    int alt44=2;
                    int LA44_0 = input.LA(1);

                    if ( (LA44_0==LT) ) {
                        alt44=1;
                    }
                    switch (alt44) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1421:10: ty1= typeParameters
                            {
                            pushFollow(FOLLOW_typeParameters_in_methodDeclaration4015);
                            ty1=typeParameters();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              typarams = ty1;
                                          
                            }

                            }
                            break;

                    }

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1426:9: (ty= type | vod= 'void' )
                    int alt45=2;
                    int LA45_0 = input.LA(1);

                    if ( (LA45_0==IDENTIFIER||LA45_0==BOOLEAN||LA45_0==BYTE||LA45_0==CHAR||LA45_0==DOUBLE||LA45_0==FLOAT||LA45_0==INT||LA45_0==LONG||LA45_0==SHORT) ) {
                        alt45=1;
                    }
                    else if ( (LA45_0==VOID) ) {
                        alt45=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 45, 0, input);

                        throw nvae;
                    }
                    switch (alt45) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1426:10: ty= type
                            {
                            pushFollow(FOLLOW_type_in_methodDeclaration4053);
                            ty=type();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              type = ty;
                                          
                            }

                            }
                            break;
                        case 2 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1430:13: vod= 'void'
                            {
                            vod=(Token)match(input,VOID,FOLLOW_VOID_in_methodDeclaration4083); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  type = T.at(((AntlrJavacToken) vod).getStartIndex()).TypeIdent(TypeTags.VOID);
                                                  pu.storeEnd(type, vod);
                                              
                            }

                            }
                            break;

                    }

                    id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodDeclaration4123); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      name = ((AntlrJavacToken) id1).name;
                                      pos = ((AntlrJavacToken) id1).getStartIndex();
                                  
                    }
                    pushFollow(FOLLOW_formalParameters_in_methodDeclaration4149);
                    fo1=formalParameters();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      params = fo1;
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1445:9: (lb= '[' rb= ']' )*
                    loop46:
                    do {
                        int alt46=2;
                        int LA46_0 = input.LA(1);

                        if ( (LA46_0==LBRACKET) ) {
                            alt46=1;
                        }


                        switch (alt46) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1445:10: lb= '[' rb= ']'
                    	    {
                    	    lb=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_methodDeclaration4176); if (state.failed) return retval;
                    	    rb=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_methodDeclaration4180); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      poss.add(((AntlrJavacToken) lb).getStartIndex());
                    	                      eposs.add(((AntlrJavacToken) rb).getStartIndex());
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop46;
                        }
                    } while (true);

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1451:9: ( 'throws' qu1= qualifiedNameList )?
                    int alt47=2;
                    int LA47_0 = input.LA(1);

                    if ( (LA47_0==THROWS) ) {
                        alt47=1;
                    }
                    switch (alt47) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1451:10: 'throws' qu1= qualifiedNameList
                            {
                            match(input,THROWS,FOLLOW_THROWS_in_methodDeclaration4216); if (state.failed) return retval;
                            pushFollow(FOLLOW_qualifiedNameList_in_methodDeclaration4220);
                            qu1=qualifiedNameList();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              thrown = qu1;
                                          
                            }

                            }
                            break;

                    }

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1456:9: (bl= block | ';' )
                    int alt48=2;
                    int LA48_0 = input.LA(1);

                    if ( (LA48_0==LBRACE) ) {
                        alt48=1;
                    }
                    else if ( (LA48_0==SEMI) ) {
                        alt48=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 48, 0, input);

                        throw nvae;
                    }
                    switch (alt48) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1457:13: bl= block
                            {
                            if ( state.backtracking==0 ) {

                                              ((GScope_scope)GScope_stack.peek()).methodName =id1.getText();
                                          
                            }
                            pushFollow(FOLLOW_block_in_methodDeclaration4305);
                            bl=block();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  body = (bl!=null?bl.tree:null);
                                              
                            }

                            }
                            break;
                        case 2 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1464:13: ';'
                            {
                            match(input,SEMI,FOLLOW_SEMI_in_methodDeclaration4337); if (state.failed) return retval;

                            }
                            break;

                    }


                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          for (ti = poss.size() - 1; ti >= 0; ti--) {
                              type = T.at(poss.get(ti)).TypeArray(type);
                              pu.storeEnd(type,eposs.get(eposs.size()-1)+1);
                          }
                          retval.tree = T.at(pos).MethodDef(mods, name, type, typarams, params, thrown, body, null);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree,dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 26, methodDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "methodDeclaration"

    public static class fieldDeclaration_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCVariableDecl> list;
    };

    // $ANTLR start "fieldDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1468:1: fieldDeclaration returns [com.sun.tools.javac.util.List<JCVariableDecl> list] : mo= modifiers ty= type va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ';' ;
    public final JavaParser.fieldDeclaration_return fieldDeclaration() throws RecognitionException {
        JavaParser.fieldDeclaration_return retval = new JavaParser.fieldDeclaration_return();
        retval.start = input.LT(1);
        int fieldDeclaration_StartIndex = input.index();
        Token cm=null;
        JavaParser.modifiers_return mo = null;

        JCExpression ty = null;

        JavaParser.variableDeclarator_return va1 = null;

        JavaParser.variableDeclarator_return va2 = null;



                    ListBuffer<JCVariableDecl> listBuffer = new ListBuffer<JCVariableDecl>();
                    ArrayList<Integer> pos = new ArrayList<Integer>();
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    JCExpression init = null;
                    JCTree ptree = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1485:5: (mo= modifiers ty= type va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ';' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1485:9: mo= modifiers ty= type va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ';'
            {
            pushFollow(FOLLOW_modifiers_in_fieldDeclaration4399);
            mo=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (mo!=null?mo.tree:null);
                          
            }
            pushFollow(FOLLOW_type_in_fieldDeclaration4425);
            ty=type();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              type=ty;
                          
            }
            pushFollow(FOLLOW_variableDeclarator_in_fieldDeclaration4451);
            va1=variableDeclarator();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              JCExpression ntype = pu.makeTypeArray(type,(va1!=null?va1.i:0), (va1!=null?va1.dimPosition:null), (va1!=null?va1.endPosition:null));
                              JCVariableDecl tree = T.at((va1!=null?va1.pos:0)).VarDef(mods, (va1!=null?va1.name:null), ntype, (va1!=null?va1.tree:null));
                              pu.attach(tree, dc);
                              listBuffer.append(tree);
                              ptree = tree;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1501:9: (cm= ',' va2= variableDeclarator )*
            loop50:
            do {
                int alt50=2;
                int LA50_0 = input.LA(1);

                if ( (LA50_0==COMMA) ) {
                    alt50=1;
                }


                switch (alt50) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1501:10: cm= ',' va2= variableDeclarator
            	    {
            	    cm=(Token)match(input,COMMA,FOLLOW_COMMA_in_fieldDeclaration4478); if (state.failed) return retval;
            	    pushFollow(FOLLOW_variableDeclarator_in_fieldDeclaration4482);
            	    va2=variableDeclarator();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      JCExpression ntype = pu.makeTypeArray(type,(va2!=null?va2.i:0), (va2!=null?va2.dimPosition:null), (va2!=null?va2.endPosition:null));
            	                      JCVariableDecl tree = T.at(va2.pos).VarDef(mods, (va2!=null?va2.name:null), ntype, (va2!=null?va2.tree:null));
            	                      pu.storeEnd(ptree, cm);
            	                      ptree = tree;
            	                      pu.attach(tree, dc);
            	                      listBuffer.append(tree);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop50;
                }
            } while (true);

            match(input,SEMI,FOLLOW_SEMI_in_fieldDeclaration4517); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = listBuffer.toList();
                          if (ptree != null) {
                              pu.storeEnd(ptree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 27, fieldDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "fieldDeclaration"

    public static class variableDeclarator_return extends ParserRuleReturnScope {
        public Name name;
        public JCExpression tree;
        public int i;
        public int pos;
        public ArrayList dimPosition;
        public ArrayList endPosition;
    };

    // $ANTLR start "variableDeclarator"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1514:1: variableDeclarator returns [Name name, JCExpression tree, int i, int pos, ArrayList dimPosition, ArrayList endPosition] : id= IDENTIFIER (lbr= '[' rbr= ']' )* ( '=' va= variableInitializer )? ;
    public final JavaParser.variableDeclarator_return variableDeclarator() throws RecognitionException {
        JavaParser.variableDeclarator_return retval = new JavaParser.variableDeclarator_return();
        retval.start = input.LT(1);
        int variableDeclarator_StartIndex = input.index();
        Token id=null;
        Token lbr=null;
        Token rbr=null;
        JCExpression va = null;



                    retval.i = 0;
                    retval.dimPosition = new ArrayList();
                    retval.endPosition = new ArrayList();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1520:5: (id= IDENTIFIER (lbr= '[' rbr= ']' )* ( '=' va= variableInitializer )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1520:9: id= IDENTIFIER (lbr= '[' rbr= ']' )* ( '=' va= variableInitializer )?
            {
            id=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_variableDeclarator4555); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              retval.pos = ((AntlrJavacToken) id).getStartIndex();
                              retval.name = ((AntlrJavacToken) id).name;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1525:9: (lbr= '[' rbr= ']' )*
            loop51:
            do {
                int alt51=2;
                int LA51_0 = input.LA(1);

                if ( (LA51_0==LBRACKET) ) {
                    alt51=1;
                }


                switch (alt51) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1525:10: lbr= '[' rbr= ']'
            	    {
            	    lbr=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_variableDeclarator4582); if (state.failed) return retval;
            	    rbr=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_variableDeclarator4586); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      retval.i = retval.i+1;
            	                      retval.dimPosition.add(((AntlrJavacToken) lbr).getStartIndex());
            	                      retval.endPosition.add(((AntlrJavacToken) rbr).getStopIndex());
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop51;
                }
            } while (true);

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1532:9: ( '=' va= variableInitializer )?
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==EQ) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1532:10: '=' va= variableInitializer
                    {
                    match(input,EQ,FOLLOW_EQ_in_variableDeclarator4622); if (state.failed) return retval;
                    pushFollow(FOLLOW_variableInitializer_in_variableDeclarator4626);
                    va=variableInitializer();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = va;
                                  
                    }

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 28, variableDeclarator_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "variableDeclarator"


    // $ANTLR start "interfaceBodyDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1539:1: interfaceBodyDeclaration returns [com.sun.tools.javac.util.List<JCTree> list] : ( interfaceFieldDeclaration | interfaceMethodDeclaration | interfaceDeclaration | classDeclaration | ';' );
    public final com.sun.tools.javac.util.List<JCTree> interfaceBodyDeclaration() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int interfaceBodyDeclaration_StartIndex = input.index();
        JavaParser.interfaceFieldDeclaration_return interfaceFieldDeclaration42 = null;

        JavaParser.interfaceMethodDeclaration_return interfaceMethodDeclaration43 = null;

        JCClassDecl interfaceDeclaration44 = null;

        JCClassDecl classDeclaration45 = null;



                    ListBuffer<JCTree> buf = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1549:5: ( interfaceFieldDeclaration | interfaceMethodDeclaration | interfaceDeclaration | classDeclaration | ';' )
            int alt53=5;
            alt53 = dfa53.predict(input);
            switch (alt53) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1550:9: interfaceFieldDeclaration
                    {
                    pushFollow(FOLLOW_interfaceFieldDeclaration_in_interfaceBodyDeclaration4708);
                    interfaceFieldDeclaration42=interfaceFieldDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.appendList((interfaceFieldDeclaration42!=null?interfaceFieldDeclaration42.list:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1554:9: interfaceMethodDeclaration
                    {
                    pushFollow(FOLLOW_interfaceMethodDeclaration_in_interfaceBodyDeclaration4732);
                    interfaceMethodDeclaration43=interfaceMethodDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((interfaceMethodDeclaration43!=null?interfaceMethodDeclaration43.tree:null));
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1558:9: interfaceDeclaration
                    {
                    pushFollow(FOLLOW_interfaceDeclaration_in_interfaceBodyDeclaration4756);
                    interfaceDeclaration44=interfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(interfaceDeclaration44);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1562:9: classDeclaration
                    {
                    pushFollow(FOLLOW_classDeclaration_in_interfaceBodyDeclaration4780);
                    classDeclaration45=classDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(classDeclaration45);
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1566:9: ';'
                    {
                    match(input,SEMI,FOLLOW_SEMI_in_interfaceBodyDeclaration4804); if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(T.at(Position.NOPOS).Block(0, com.sun.tools.javac.util.List.<JCStatement> nil()));
                                  
                    }

                    }
                    break;

            }
            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 29, interfaceBodyDeclaration_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "interfaceBodyDeclaration"

    public static class interfaceMethodDeclaration_return extends ParserRuleReturnScope {
        public JCMethodDecl tree;
    };

    // $ANTLR start "interfaceMethodDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1572:1: interfaceMethodDeclaration returns [JCMethodDecl tree] : modifiers ( typeParameters )? ( type | vod= 'void' ) IDENTIFIER formalParameters (lbr= '[' rbr= ']' )* ( 'throws' qu= qualifiedNameList )? ';' ;
    public final JavaParser.interfaceMethodDeclaration_return interfaceMethodDeclaration() throws RecognitionException {
        JavaParser.interfaceMethodDeclaration_return retval = new JavaParser.interfaceMethodDeclaration_return();
        retval.start = input.LT(1);
        int interfaceMethodDeclaration_StartIndex = input.index();
        Token vod=null;
        Token lbr=null;
        Token rbr=null;
        Token IDENTIFIER49=null;
        com.sun.tools.javac.util.List<JCExpression> qu = null;

        JavaParser.modifiers_return modifiers46 = null;

        com.sun.tools.javac.util.List<JCTypeParameter> typeParameters47 = null;

        JCExpression type48 = null;

        com.sun.tools.javac.util.List<JCVariableDecl> formalParameters50 = null;



                    com.sun.tools.javac.util.List<JCVariableDecl> params = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTypeParameter> typarams = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCExpression> thrown = com.sun.tools.javac.util.List.nil();
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    ArrayList<Integer> poss = new ArrayList<Integer>();
                    ArrayList<Integer> eposs = new ArrayList<Integer>();
                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1594:5: ( modifiers ( typeParameters )? ( type | vod= 'void' ) IDENTIFIER formalParameters (lbr= '[' rbr= ']' )* ( 'throws' qu= qualifiedNameList )? ';' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1594:9: modifiers ( typeParameters )? ( type | vod= 'void' ) IDENTIFIER formalParameters (lbr= '[' rbr= ']' )* ( 'throws' qu= qualifiedNameList )? ';'
            {
            pushFollow(FOLLOW_modifiers_in_interfaceMethodDeclaration4867);
            modifiers46=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers46!=null?modifiers46.tree:null);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1598:9: ( typeParameters )?
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==LT) ) {
                alt54=1;
            }
            switch (alt54) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1598:10: typeParameters
                    {
                    pushFollow(FOLLOW_typeParameters_in_interfaceMethodDeclaration4892);
                    typeParameters47=typeParameters();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      typarams = typeParameters47;
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1603:9: ( type | vod= 'void' )
            int alt55=2;
            int LA55_0 = input.LA(1);

            if ( (LA55_0==IDENTIFIER||LA55_0==BOOLEAN||LA55_0==BYTE||LA55_0==CHAR||LA55_0==DOUBLE||LA55_0==FLOAT||LA55_0==INT||LA55_0==LONG||LA55_0==SHORT) ) {
                alt55=1;
            }
            else if ( (LA55_0==VOID) ) {
                alt55=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 55, 0, input);

                throw nvae;
            }
            switch (alt55) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1603:10: type
                    {
                    pushFollow(FOLLOW_type_in_interfaceMethodDeclaration4928);
                    type48=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      type = type48;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1607:11: vod= 'void'
                    {
                    vod=(Token)match(input,VOID,FOLLOW_VOID_in_interfaceMethodDeclaration4956); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      type = T.at(((AntlrJavacToken) vod).getStartIndex()).TypeIdent(TypeTags.VOID);
                                      pu.storeEnd(type, vod);
                                  
                    }

                    }
                    break;

            }

            IDENTIFIER49=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceMethodDeclaration4990); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              name = ((AntlrJavacToken) IDENTIFIER49).name;
                              pos = ((AntlrJavacToken) IDENTIFIER49).getStartIndex();
                          
            }
            pushFollow(FOLLOW_formalParameters_in_interfaceMethodDeclaration5014);
            formalParameters50=formalParameters();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              params = formalParameters50;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1622:9: (lbr= '[' rbr= ']' )*
            loop56:
            do {
                int alt56=2;
                int LA56_0 = input.LA(1);

                if ( (LA56_0==LBRACKET) ) {
                    alt56=1;
                }


                switch (alt56) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1622:10: lbr= '[' rbr= ']'
            	    {
            	    lbr=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_interfaceMethodDeclaration5041); if (state.failed) return retval;
            	    rbr=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_interfaceMethodDeclaration5045); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      poss.add(((AntlrJavacToken) lbr).getStartIndex());
            	                      eposs.add(((AntlrJavacToken) rbr).getStartIndex());
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop56;
                }
            } while (true);

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1628:9: ( 'throws' qu= qualifiedNameList )?
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==THROWS) ) {
                alt57=1;
            }
            switch (alt57) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1628:10: 'throws' qu= qualifiedNameList
                    {
                    match(input,THROWS,FOLLOW_THROWS_in_interfaceMethodDeclaration5081); if (state.failed) return retval;
                    pushFollow(FOLLOW_qualifiedNameList_in_interfaceMethodDeclaration5085);
                    qu=qualifiedNameList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      thrown = qu;
                                  
                    }

                    }
                    break;

            }

            match(input,SEMI,FOLLOW_SEMI_in_interfaceMethodDeclaration5112); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          for (ti = poss.size() - 1; ti>= 0; ti--) {
                              type = T.at(poss.get(ti)).TypeArray(type);
                              pu.storeEnd(type, eposs.get(eposs.size() - 1) + 1);
                          }
                          retval.tree = T.at(pos).MethodDef(mods, name, type, typarams, params, thrown, null, null);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree,dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 30, interfaceMethodDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "interfaceMethodDeclaration"

    public static class interfaceFieldDeclaration_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCTree> list;
    };

    // $ANTLR start "interfaceFieldDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1635:1: interfaceFieldDeclaration returns [com.sun.tools.javac.util.List<JCTree> list] : modifiers type va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ';' ;
    public final JavaParser.interfaceFieldDeclaration_return interfaceFieldDeclaration() throws RecognitionException {
        JavaParser.interfaceFieldDeclaration_return retval = new JavaParser.interfaceFieldDeclaration_return();
        retval.start = input.LT(1);
        int interfaceFieldDeclaration_StartIndex = input.index();
        Token cm=null;
        JavaParser.variableDeclarator_return va1 = null;

        JavaParser.variableDeclarator_return va2 = null;

        JavaParser.modifiers_return modifiers51 = null;

        JCExpression type52 = null;



                    ListBuffer<JCTree> listBuffer = new ListBuffer<JCTree>();
                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    JCExpression init = null;
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCTree ptree = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1656:5: ( modifiers type va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ';' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1656:9: modifiers type va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ';'
            {
            pushFollow(FOLLOW_modifiers_in_interfaceFieldDeclaration5163);
            modifiers51=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            pushFollow(FOLLOW_type_in_interfaceFieldDeclaration5165);
            type52=type();

            state._fsp--;
            if (state.failed) return retval;
            pushFollow(FOLLOW_variableDeclarator_in_interfaceFieldDeclaration5169);
            va1=variableDeclarator();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers51!=null?modifiers51.tree:null);
                              type = type52;
                              JCExpression ntype = pu.makeTypeArray(type,(va1!=null?va1.i:0), (va1!=null?va1.dimPosition:null), (va1!=null?va1.endPosition:null));
                              if ((va1!=null?va1.tree:null) == null) {
                                 log.error(((CommonToken)input.LT(1)).getStartIndex(), "expected", "=");
                              }
                              JCTree tree = T.at((va1!=null?va1.pos:0)).VarDef(mods, (va1!=null?va1.name:null), ntype, (va1!=null?va1.tree:null));
                              ptree = tree;
                              pu.attach(tree,dc);
                              listBuffer.append(tree);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1669:9: (cm= ',' va2= variableDeclarator )*
            loop58:
            do {
                int alt58=2;
                int LA58_0 = input.LA(1);

                if ( (LA58_0==COMMA) ) {
                    alt58=1;
                }


                switch (alt58) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1669:10: cm= ',' va2= variableDeclarator
            	    {
            	    cm=(Token)match(input,COMMA,FOLLOW_COMMA_in_interfaceFieldDeclaration5196); if (state.failed) return retval;
            	    pushFollow(FOLLOW_variableDeclarator_in_interfaceFieldDeclaration5200);
            	    va2=variableDeclarator();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      JCExpression ntype = pu.makeTypeArray(type,(va2!=null?va2.i:0), (va2!=null?va2.dimPosition:null), (va2!=null?va2.endPosition:null));
            	                      if ((va2!=null?va2.tree:null) == null) {
            	                         log.error(((CommonToken)input.LT(1)).getStartIndex(), "expected", "=");
            	                      }
            	                      JCTree tree = T.at((va2!=null?va2.pos:0)).VarDef(mods, (va2!=null?va2.name:null), ntype, (va2!=null?va2.tree:null));
            	                      pu.storeEnd(ptree, cm);
            	                      ptree = tree;
            	                      pu.attach(tree,dc);
            	                      listBuffer.append(tree);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop58;
                }
            } while (true);

            match(input,SEMI,FOLLOW_SEMI_in_interfaceFieldDeclaration5235); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = listBuffer.toList();
                          if (ptree != null) {
                              pu.storeEnd(ptree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 31, interfaceFieldDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "interfaceFieldDeclaration"


    // $ANTLR start "type"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1686:1: type returns [JCExpression tree] : ( classOrInterfaceType (lb1= '[' rb1= ']' )* | primitiveType (lb2= '[' rb2= ']' )* );
    public final JCExpression type() throws RecognitionException {
        JCExpression tree = null;
        int type_StartIndex = input.index();
        Token lb1=null;
        Token rb1=null;
        Token lb2=null;
        Token rb2=null;
        JCExpression classOrInterfaceType53 = null;

        JavaParser.primitiveType_return primitiveType54 = null;



                    JCExpression t = null;
                    ArrayList<Integer> poss = new ArrayList<Integer>();
                    ArrayList<Integer> eposs = new ArrayList<Integer>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1699:5: ( classOrInterfaceType (lb1= '[' rb1= ']' )* | primitiveType (lb2= '[' rb2= ']' )* )
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==IDENTIFIER) ) {
                alt61=1;
            }
            else if ( (LA61_0==BOOLEAN||LA61_0==BYTE||LA61_0==CHAR||LA61_0==DOUBLE||LA61_0==FLOAT||LA61_0==INT||LA61_0==LONG||LA61_0==SHORT) ) {
                alt61=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return tree;}
                NoViableAltException nvae =
                    new NoViableAltException("", 61, 0, input);

                throw nvae;
            }
            switch (alt61) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1699:9: classOrInterfaceType (lb1= '[' rb1= ']' )*
                    {
                    pushFollow(FOLLOW_classOrInterfaceType_in_type5285);
                    classOrInterfaceType53=classOrInterfaceType();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      t = classOrInterfaceType53;
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1703:9: (lb1= '[' rb1= ']' )*
                    loop59:
                    do {
                        int alt59=2;
                        int LA59_0 = input.LA(1);

                        if ( (LA59_0==LBRACKET) ) {
                            alt59=1;
                        }


                        switch (alt59) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1703:10: lb1= '[' rb1= ']'
                    	    {
                    	    lb1=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_type5312); if (state.failed) return tree;
                    	    rb1=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_type5316); if (state.failed) return tree;
                    	    if ( state.backtracking==0 ) {

                    	                      poss.add(((AntlrJavacToken) lb1).getStartIndex());
                    	                      eposs.add(((AntlrJavacToken) rb1).getStartIndex());
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop59;
                        }
                    } while (true);


                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1709:9: primitiveType (lb2= '[' rb2= ']' )*
                    {
                    pushFollow(FOLLOW_primitiveType_in_type5351);
                    primitiveType54=primitiveType();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      t = (primitiveType54!=null?primitiveType54.tree:null);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1713:9: (lb2= '[' rb2= ']' )*
                    loop60:
                    do {
                        int alt60=2;
                        int LA60_0 = input.LA(1);

                        if ( (LA60_0==LBRACKET) ) {
                            alt60=1;
                        }


                        switch (alt60) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1713:10: lb2= '[' rb2= ']'
                    	    {
                    	    lb2=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_type5378); if (state.failed) return tree;
                    	    rb2=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_type5382); if (state.failed) return tree;
                    	    if ( state.backtracking==0 ) {

                    	                      poss.add(((AntlrJavacToken) lb2).getStartIndex());
                    	                      eposs.add(((AntlrJavacToken) rb2).getStartIndex());
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop60;
                        }
                    } while (true);


                    }
                    break;

            }
            if ( state.backtracking==0 ) {

                          for (ti = poss.size() - 1; ti >= 0; ti--) {
                              t = T.at(poss.get(ti)).TypeArray(t);
                              pu.storeEnd(t, eposs.get(eposs.size() - 1) + 1);
                          }
                          tree = t;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 32, type_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "type"


    // $ANTLR start "classOrInterfaceType"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1722:1: classOrInterfaceType returns [JCExpression tree] : id1= IDENTIFIER (ty1= typeArguments )? (dt= '.' id2= IDENTIFIER (ty2= typeArguments )? )* ;
    public final JCExpression classOrInterfaceType() throws RecognitionException {
        JCExpression tree = null;
        int classOrInterfaceType_StartIndex = input.index();
        Token id1=null;
        Token dt=null;
        Token id2=null;
        JavaParser.typeArguments_return ty1 = null;

        JavaParser.typeArguments_return ty2 = null;



                    JCExpression t = null;
                    Name name = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1730:5: (id1= IDENTIFIER (ty1= typeArguments )? (dt= '.' id2= IDENTIFIER (ty2= typeArguments )? )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1730:9: id1= IDENTIFIER (ty1= typeArguments )? (dt= '.' id2= IDENTIFIER (ty2= typeArguments )? )*
            {
            id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_classOrInterfaceType5459); if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              t = T.at(((AntlrJavacToken) id1).getStartIndex()).Ident(((AntlrJavacToken) id1).name);
                              pu.storeEnd(t, id1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1735:9: (ty1= typeArguments )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==LT) ) {
                int LA62_1 = input.LA(2);

                if ( (LA62_1==IDENTIFIER||LA62_1==BOOLEAN||LA62_1==BYTE||LA62_1==CHAR||LA62_1==DOUBLE||LA62_1==FLOAT||LA62_1==INT||LA62_1==LONG||LA62_1==SHORT||LA62_1==QUES) ) {
                    alt62=1;
                }
            }
            switch (alt62) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1735:10: ty1= typeArguments
                    {
                    pushFollow(FOLLOW_typeArguments_in_classOrInterfaceType5486);
                    ty1=typeArguments();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      t = T.at(((AntlrJavacToken) (ty1!=null?((Token)ty1.start):null)).getStartIndex()).TypeApply(t, (ty1!=null?ty1.list:null));
                                      pu.storeEnd(t, (ty1!=null?((Token)ty1.stop):null));
                                  
                    }

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1741:9: (dt= '.' id2= IDENTIFIER (ty2= typeArguments )? )*
            loop64:
            do {
                int alt64=2;
                int LA64_0 = input.LA(1);

                if ( (LA64_0==DOT) ) {
                    alt64=1;
                }


                switch (alt64) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1741:10: dt= '.' id2= IDENTIFIER (ty2= typeArguments )?
            	    {
            	    dt=(Token)match(input,DOT,FOLLOW_DOT_in_classOrInterfaceType5524); if (state.failed) return tree;
            	    id2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_classOrInterfaceType5528); if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                          t = T.at(((AntlrJavacToken) dt).getStartIndex()).Select(t, ((AntlrJavacToken) id2).name);
            	                          pu.storeEnd(t,id2);
            	                      
            	    }
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1746:13: (ty2= typeArguments )?
            	    int alt63=2;
            	    int LA63_0 = input.LA(1);

            	    if ( (LA63_0==LT) ) {
            	        int LA63_1 = input.LA(2);

            	        if ( (LA63_1==IDENTIFIER||LA63_1==BOOLEAN||LA63_1==BYTE||LA63_1==CHAR||LA63_1==DOUBLE||LA63_1==FLOAT||LA63_1==INT||LA63_1==LONG||LA63_1==SHORT||LA63_1==QUES) ) {
            	            alt63=1;
            	        }
            	    }
            	    switch (alt63) {
            	        case 1 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1746:14: ty2= typeArguments
            	            {
            	            pushFollow(FOLLOW_typeArguments_in_classOrInterfaceType5563);
            	            ty2=typeArguments();

            	            state._fsp--;
            	            if (state.failed) return tree;
            	            if ( state.backtracking==0 ) {

            	                                  t = T.at(((AntlrJavacToken) (ty2!=null?((Token)ty2.start):null)).getStartIndex()).TypeApply(t, (ty2!=null?ty2.list:null));
            	                                  pu.storeEnd(t, (ty2!=null?((Token)ty2.stop):null));
            	                              
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop64;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = t;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 33, classOrInterfaceType_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "classOrInterfaceType"

    public static class primitiveType_return extends ParserRuleReturnScope {
        public JCPrimitiveTypeTree tree;
    };

    // $ANTLR start "primitiveType"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1755:1: primitiveType returns [JCPrimitiveTypeTree tree] : ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' );
    public final JavaParser.primitiveType_return primitiveType() throws RecognitionException {
        JavaParser.primitiveType_return retval = new JavaParser.primitiveType_return();
        retval.start = input.LT(1);
        int primitiveType_StartIndex = input.index();

                    int i = -1;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1764:5: ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' )
            int alt65=8;
            switch ( input.LA(1) ) {
            case BOOLEAN:
                {
                alt65=1;
                }
                break;
            case CHAR:
                {
                alt65=2;
                }
                break;
            case BYTE:
                {
                alt65=3;
                }
                break;
            case SHORT:
                {
                alt65=4;
                }
                break;
            case INT:
                {
                alt65=5;
                }
                break;
            case LONG:
                {
                alt65=6;
                }
                break;
            case FLOAT:
                {
                alt65=7;
                }
                break;
            case DOUBLE:
                {
                alt65=8;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 65, 0, input);

                throw nvae;
            }

            switch (alt65) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1764:9: 'boolean'
                    {
                    match(input,BOOLEAN,FOLLOW_BOOLEAN_in_primitiveType5657); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.BOOLEAN;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1768:9: 'char'
                    {
                    match(input,CHAR,FOLLOW_CHAR_in_primitiveType5681); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.CHAR;
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1772:9: 'byte'
                    {
                    match(input,BYTE,FOLLOW_BYTE_in_primitiveType5705); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.BYTE;
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1776:9: 'short'
                    {
                    match(input,SHORT,FOLLOW_SHORT_in_primitiveType5729); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.SHORT;
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1780:9: 'int'
                    {
                    match(input,INT,FOLLOW_INT_in_primitiveType5753); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.INT;
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1784:9: 'long'
                    {
                    match(input,LONG,FOLLOW_LONG_in_primitiveType5777); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.LONG;
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1788:9: 'float'
                    {
                    match(input,FLOAT,FOLLOW_FLOAT_in_primitiveType5801); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.FLOAT;
                                  
                    }

                    }
                    break;
                case 8 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1792:9: 'double'
                    {
                    match(input,DOUBLE,FOLLOW_DOUBLE_in_primitiveType5825); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      i = TypeTags.DOUBLE;
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).TypeIdent(i);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 34, primitiveType_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "primitiveType"

    public static class typeArguments_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCExpression> list;
    };

    // $ANTLR start "typeArguments"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1798:1: typeArguments returns [com.sun.tools.javac.util.List<JCExpression> list] : lb= '<' ty1= typeArgument ( ',' ty2= typeArgument )* '>' ;
    public final JavaParser.typeArguments_return typeArguments() throws RecognitionException {
        JavaParser.typeArguments_return retval = new JavaParser.typeArguments_return();
        retval.start = input.LT(1);
        int typeArguments_StartIndex = input.index();
        Token lb=null;
        JavaParser.typeArgument_return ty1 = null;

        JavaParser.typeArgument_return ty2 = null;



                    ListBuffer<JCExpression> args = new ListBuffer<JCExpression>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1805:5: (lb= '<' ty1= typeArgument ( ',' ty2= typeArgument )* '>' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1805:9: lb= '<' ty1= typeArgument ( ',' ty2= typeArgument )* '>'
            {
            lb=(Token)match(input,LT,FOLLOW_LT_in_typeArguments5890); if (state.failed) return retval;
            pushFollow(FOLLOW_typeArgument_in_typeArguments5894);
            ty1=typeArgument();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              args.append((ty1!=null?ty1.tree:null));
                              checkGeneric(lb);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1810:9: ( ',' ty2= typeArgument )*
            loop66:
            do {
                int alt66=2;
                int LA66_0 = input.LA(1);

                if ( (LA66_0==COMMA) ) {
                    alt66=1;
                }


                switch (alt66) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1810:10: ',' ty2= typeArgument
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_typeArguments5919); if (state.failed) return retval;
            	    pushFollow(FOLLOW_typeArgument_in_typeArguments5923);
            	    ty2=typeArgument();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      args.append((ty2!=null?ty2.tree:null));
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop66;
                }
            } while (true);

            match(input,GT,FOLLOW_GT_in_typeArguments5950); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = args.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 35, typeArguments_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "typeArguments"

    public static class typeArgument_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "typeArgument"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1817:1: typeArgument returns [JCExpression tree] : (tya= type | '?' ( (ex= 'extends' | su= 'super' ) tyb= type )? );
    public final JavaParser.typeArgument_return typeArgument() throws RecognitionException {
        JavaParser.typeArgument_return retval = new JavaParser.typeArgument_return();
        retval.start = input.LT(1);
        int typeArgument_StartIndex = input.index();
        Token ex=null;
        Token su=null;
        JCExpression tya = null;

        JCExpression tyb = null;



                    TypeBoundKind bound = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1828:5: (tya= type | '?' ( (ex= 'extends' | su= 'super' ) tyb= type )? )
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==IDENTIFIER||LA69_0==BOOLEAN||LA69_0==BYTE||LA69_0==CHAR||LA69_0==DOUBLE||LA69_0==FLOAT||LA69_0==INT||LA69_0==LONG||LA69_0==SHORT) ) {
                alt69=1;
            }
            else if ( (LA69_0==QUES) ) {
                alt69=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }
            switch (alt69) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1828:9: tya= type
                    {
                    pushFollow(FOLLOW_type_in_typeArgument6001);
                    tya=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = tya;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1832:9: '?' ( (ex= 'extends' | su= 'super' ) tyb= type )?
                    {
                    match(input,QUES,FOLLOW_QUES_in_typeArgument6025); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      bound = T.at(Position.NOPOS).TypeBoundKind(BoundKind.UNBOUND);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1836:9: ( (ex= 'extends' | su= 'super' ) tyb= type )?
                    int alt68=2;
                    int LA68_0 = input.LA(1);

                    if ( (LA68_0==EXTENDS||LA68_0==SUPER) ) {
                        alt68=1;
                    }
                    switch (alt68) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1836:10: (ex= 'extends' | su= 'super' ) tyb= type
                            {
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1836:10: (ex= 'extends' | su= 'super' )
                            int alt67=2;
                            int LA67_0 = input.LA(1);

                            if ( (LA67_0==EXTENDS) ) {
                                alt67=1;
                            }
                            else if ( (LA67_0==SUPER) ) {
                                alt67=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return retval;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 67, 0, input);

                                throw nvae;
                            }
                            switch (alt67) {
                                case 1 :
                                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1836:11: ex= 'extends'
                                    {
                                    ex=(Token)match(input,EXTENDS,FOLLOW_EXTENDS_in_typeArgument6053); if (state.failed) return retval;
                                    if ( state.backtracking==0 ) {

                                                          bound = T.at(((AntlrJavacToken) ex).getStartIndex()).TypeBoundKind(BoundKind.EXTENDS);
                                                          pu.storeEnd(bound, ex);
                                                      
                                    }

                                    }
                                    break;
                                case 2 :
                                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1841:15: su= 'super'
                                    {
                                    su=(Token)match(input,SUPER,FOLLOW_SUPER_in_typeArgument6089); if (state.failed) return retval;
                                    if ( state.backtracking==0 ) {

                                                          bound = T.at(((AntlrJavacToken) su).getStartIndex()).TypeBoundKind(BoundKind.SUPER);
                                                          pu.storeEnd(bound, su);
                                                      
                                    }

                                    }
                                    break;

                            }

                            pushFollow(FOLLOW_type_in_typeArgument6137);
                            tyb=type();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  retval.tree = T.at(pos).Wildcard(bound, tyb);
                                              
                            }

                            }
                            break;

                    }


                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          if (retval.tree == null) {
                              retval.tree = T.at(pos).Wildcard(bound, null);
                              pu.storeEnd(retval.tree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 36, typeArgument_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "typeArgument"


    // $ANTLR start "qualifiedNameList"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1854:1: qualifiedNameList returns [com.sun.tools.javac.util.List<JCExpression> list] : qu1= qualifiedName ( ',' qu2= qualifiedName )* ;
    public final com.sun.tools.javac.util.List<JCExpression> qualifiedNameList() throws RecognitionException {
        com.sun.tools.javac.util.List<JCExpression> list = null;
        int qualifiedNameList_StartIndex = input.index();
        JCExpression qu1 = null;

        JCExpression qu2 = null;



                    ListBuffer<JCExpression> ts = new ListBuffer<JCExpression>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1861:5: (qu1= qualifiedName ( ',' qu2= qualifiedName )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1861:9: qu1= qualifiedName ( ',' qu2= qualifiedName )*
            {
            pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList6217);
            qu1=qualifiedName();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              ts.append(qu1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1865:9: ( ',' qu2= qualifiedName )*
            loop70:
            do {
                int alt70=2;
                int LA70_0 = input.LA(1);

                if ( (LA70_0==COMMA) ) {
                    alt70=1;
                }


                switch (alt70) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1865:10: ',' qu2= qualifiedName
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_qualifiedNameList6242); if (state.failed) return list;
            	    pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList6246);
            	    qu2=qualifiedName();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      ts.append(qu2);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop70;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = ts.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 37, qualifiedNameList_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "qualifiedNameList"


    // $ANTLR start "formalParameters"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1872:1: formalParameters returns [com.sun.tools.javac.util.List<JCVariableDecl> list] : '(' ( formalParameterDecls )? ')' ;
    public final com.sun.tools.javac.util.List<JCVariableDecl> formalParameters() throws RecognitionException {
        com.sun.tools.javac.util.List<JCVariableDecl> list = null;
        int formalParameters_StartIndex = input.index();
        com.sun.tools.javac.util.List<JCVariableDecl> formalParameterDecls55 = null;



                    list = com.sun.tools.javac.util.List.nil();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1876:5: ( '(' ( formalParameterDecls )? ')' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1876:9: '(' ( formalParameterDecls )? ')'
            {
            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameters6307); if (state.failed) return list;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1876:12: ( formalParameterDecls )?
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( (LA71_0==IDENTIFIER||LA71_0==BOOLEAN||LA71_0==BYTE||LA71_0==CHAR||LA71_0==DOUBLE||LA71_0==FINAL||LA71_0==FLOAT||LA71_0==INT||LA71_0==LONG||LA71_0==SHORT||LA71_0==MONKEYS_AT||LA71_0==VAR) ) {
                alt71=1;
            }
            switch (alt71) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1876:13: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_formalParameters6309);
                    formalParameterDecls55=formalParameterDecls();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      list = formalParameterDecls55;
                                  
                    }

                    }
                    break;

            }

            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameters6336); if (state.failed) return list;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 38, formalParameters_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "formalParameters"


    // $ANTLR start "formalParameterDecls"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1883:1: formalParameterDecls returns [com.sun.tools.javac.util.List<JCVariableDecl> list] : (el1= ellipsisParameterDecl | no1= normalParameterDecl ( ',' no2= normalParameterDecl )* | (no3= normalParameterDecl ',' )+ el2= ellipsisParameterDecl );
    public final com.sun.tools.javac.util.List<JCVariableDecl> formalParameterDecls() throws RecognitionException {
        com.sun.tools.javac.util.List<JCVariableDecl> list = null;
        int formalParameterDecls_StartIndex = input.index();
        JavaParser.ellipsisParameterDecl_return el1 = null;

        JavaParser.normalParameterDecl_return no1 = null;

        JavaParser.normalParameterDecl_return no2 = null;

        JavaParser.normalParameterDecl_return no3 = null;

        JavaParser.ellipsisParameterDecl_return el2 = null;



                    ListBuffer<JCVariableDecl> params = new ListBuffer<JCVariableDecl>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1890:5: (el1= ellipsisParameterDecl | no1= normalParameterDecl ( ',' no2= normalParameterDecl )* | (no3= normalParameterDecl ',' )+ el2= ellipsisParameterDecl )
            int alt74=3;
            alt74 = dfa74.predict(input);
            switch (alt74) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1890:9: el1= ellipsisParameterDecl
                    {
                    pushFollow(FOLLOW_ellipsisParameterDecl_in_formalParameterDecls6387);
                    el1=ellipsisParameterDecl();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      params.append((el1!=null?el1.tree:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1894:9: no1= normalParameterDecl ( ',' no2= normalParameterDecl )*
                    {
                    pushFollow(FOLLOW_normalParameterDecl_in_formalParameterDecls6413);
                    no1=normalParameterDecl();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      params.append((no1!=null?no1.tree:null));
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1898:9: ( ',' no2= normalParameterDecl )*
                    loop72:
                    do {
                        int alt72=2;
                        int LA72_0 = input.LA(1);

                        if ( (LA72_0==COMMA) ) {
                            alt72=1;
                        }


                        switch (alt72) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1898:10: ',' no2= normalParameterDecl
                    	    {
                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterDecls6438); if (state.failed) return list;
                    	    pushFollow(FOLLOW_normalParameterDecl_in_formalParameterDecls6442);
                    	    no2=normalParameterDecl();

                    	    state._fsp--;
                    	    if (state.failed) return list;
                    	    if ( state.backtracking==0 ) {

                    	                      params.append((no2!=null?no2.tree:null));
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop72;
                        }
                    } while (true);


                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1903:9: (no3= normalParameterDecl ',' )+ el2= ellipsisParameterDecl
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1903:9: (no3= normalParameterDecl ',' )+
                    int cnt73=0;
                    loop73:
                    do {
                        int alt73=2;
                        alt73 = dfa73.predict(input);
                        switch (alt73) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1903:10: no3= normalParameterDecl ','
                    	    {
                    	    pushFollow(FOLLOW_normalParameterDecl_in_formalParameterDecls6480);
                    	    no3=normalParameterDecl();

                    	    state._fsp--;
                    	    if (state.failed) return list;
                    	    if ( state.backtracking==0 ) {

                    	                      params.append((no3!=null?no3.tree:null));
                    	                  
                    	    }
                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterDecls6504); if (state.failed) return list;

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt73 >= 1 ) break loop73;
                    	    if (state.backtracking>0) {state.failed=true; return list;}
                                EarlyExitException eee =
                                    new EarlyExitException(73, input);
                                throw eee;
                        }
                        cnt73++;
                    } while (true);

                    pushFollow(FOLLOW_ellipsisParameterDecl_in_formalParameterDecls6510);
                    el2=ellipsisParameterDecl();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      params.append((el2!=null?el2.tree:null));
                                  
                    }

                    }
                    break;

            }
            if ( state.backtracking==0 ) {

                          list = params.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 39, formalParameterDecls_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "formalParameterDecls"

    public static class normalParameterDecl_return extends ParserRuleReturnScope {
        public JCVariableDecl tree;
    };

    // $ANTLR start "normalParameterDecl"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1913:1: normalParameterDecl returns [JCVariableDecl tree] : variableModifiers type IDENTIFIER (lbr= '[' rbr= ']' )* ;
    public final JavaParser.normalParameterDecl_return normalParameterDecl() throws RecognitionException {
        JavaParser.normalParameterDecl_return retval = new JavaParser.normalParameterDecl_return();
        retval.start = input.LT(1);
        int normalParameterDecl_StartIndex = input.index();
        Token lbr=null;
        Token rbr=null;
        Token IDENTIFIER58=null;
        JavaParser.variableModifiers_return variableModifiers56 = null;

        JCExpression type57 = null;



                    JCModifiers mods = null;
                    JCExpression paraType = null;
                    Name name = null;
                    ArrayList<Integer> poss = new ArrayList<Integer>();
                    ArrayList<Integer> eposs = new ArrayList<Integer>();
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1930:5: ( variableModifiers type IDENTIFIER (lbr= '[' rbr= ']' )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1930:9: variableModifiers type IDENTIFIER (lbr= '[' rbr= ']' )*
            {
            pushFollow(FOLLOW_variableModifiers_in_normalParameterDecl6573);
            variableModifiers56=variableModifiers();

            state._fsp--;
            if (state.failed) return retval;
            pushFollow(FOLLOW_type_in_normalParameterDecl6575);
            type57=type();

            state._fsp--;
            if (state.failed) return retval;
            IDENTIFIER58=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_normalParameterDecl6577); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (variableModifiers56!=null?variableModifiers56.tree:null);
                              mods.flags |= Flags.PARAMETER;
                              paraType = type57;
                              name = ((AntlrJavacToken) IDENTIFIER58).name;
                              pos = ((AntlrJavacToken) IDENTIFIER58).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1938:9: (lbr= '[' rbr= ']' )*
            loop75:
            do {
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( (LA75_0==LBRACKET) ) {
                    alt75=1;
                }


                switch (alt75) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1938:10: lbr= '[' rbr= ']'
            	    {
            	    lbr=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_normalParameterDecl6604); if (state.failed) return retval;
            	    rbr=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_normalParameterDecl6608); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      poss.add(((AntlrJavacToken) lbr).getStartIndex());
            	                      eposs.add(((AntlrJavacToken) rbr).getStartIndex());
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop75;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          for (ti = poss.size() - 1 ; ti >= 0; ti--) {
                              paraType = T.at(poss.get(ti)).TypeArray(paraType);
                              pu.storeEnd(paraType,eposs.get(eposs.size()-1)+1);
                          }
                          retval.tree = T.at(pos).VarDef(mods, name, paraType, null);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 40, normalParameterDecl_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "normalParameterDecl"

    public static class ellipsisParameterDecl_return extends ParserRuleReturnScope {
        public JCVariableDecl tree;
    };

    // $ANTLR start "ellipsisParameterDecl"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1946:1: ellipsisParameterDecl returns [JCVariableDecl tree] : variableModifiers type dots= '...' IDENTIFIER ;
    public final JavaParser.ellipsisParameterDecl_return ellipsisParameterDecl() throws RecognitionException {
        JavaParser.ellipsisParameterDecl_return retval = new JavaParser.ellipsisParameterDecl_return();
        retval.start = input.LT(1);
        int ellipsisParameterDecl_StartIndex = input.index();
        Token dots=null;
        Token IDENTIFIER61=null;
        JavaParser.variableModifiers_return variableModifiers59 = null;

        JCExpression type60 = null;



                    JCModifiers mods = null;
                    JCExpression paraType = null;
                    Name name = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1957:5: ( variableModifiers type dots= '...' IDENTIFIER )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1957:9: variableModifiers type dots= '...' IDENTIFIER
            {
            pushFollow(FOLLOW_variableModifiers_in_ellipsisParameterDecl6682);
            variableModifiers59=variableModifiers();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (variableModifiers59!=null?variableModifiers59.tree:null);
                              mods.flags |= Flags.PARAMETER;
                              mods.flags |= Flags.VARARGS;
                          
            }
            pushFollow(FOLLOW_type_in_ellipsisParameterDecl6706);
            type60=type();

            state._fsp--;
            if (state.failed) return retval;
            dots=(Token)match(input,ELLIPSIS,FOLLOW_ELLIPSIS_in_ellipsisParameterDecl6711); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              paraType = T.at(((AntlrJavacToken) dots).getStartIndex()).TypeArray(type60);
                              pu.storeEnd(paraType, dots);
                              checkVarArg(dots);
                          
            }
            IDENTIFIER61=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_ellipsisParameterDecl6736); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              name = ((AntlrJavacToken) IDENTIFIER61).name; pos = ((AntlrJavacToken) IDENTIFIER61).getStartIndex();
                          
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).VarDef(mods, name, paraType, null);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 41, ellipsisParameterDecl_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "ellipsisParameterDecl"

    public static class explicitConstructorInvocation_return extends ParserRuleReturnScope {
        public JCStatement tree;
    };

    // $ANTLR start "explicitConstructorInvocation"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1976:1: explicitConstructorInvocation returns [JCStatement tree] : ( (nw= nonWildcardTypeArguments )? (ths= 'this' | sup= 'super' ) ag1= arguments ';' | pr= primary dt2= '.' (nw2= nonWildcardTypeArguments )? sup2= 'super' ag2= arguments ';' );
    public final JavaParser.explicitConstructorInvocation_return explicitConstructorInvocation() throws RecognitionException {
        JavaParser.explicitConstructorInvocation_return retval = new JavaParser.explicitConstructorInvocation_return();
        retval.start = input.LT(1);
        int explicitConstructorInvocation_StartIndex = input.index();
        Token ths=null;
        Token sup=null;
        Token dt2=null;
        Token sup2=null;
        JavaParser.nonWildcardTypeArguments_return nw = null;

        JavaParser.arguments_return ag1 = null;

        JavaParser.primary_return pr = null;

        JavaParser.nonWildcardTypeArguments_return nw2 = null;

        JavaParser.arguments_return ag2 = null;



                    com.sun.tools.javac.util.List<JCExpression> typeArgs = null;
                    JCExpression expr = null;
                    int pos = 0, supPos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:5: ( (nw= nonWildcardTypeArguments )? (ths= 'this' | sup= 'super' ) ag1= arguments ';' | pr= primary dt2= '.' (nw2= nonWildcardTypeArguments )? sup2= 'super' ag2= arguments ';' )
            int alt79=2;
            alt79 = dfa79.predict(input);
            switch (alt79) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:9: (nw= nonWildcardTypeArguments )? (ths= 'this' | sup= 'super' ) ag1= arguments ';'
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:9: (nw= nonWildcardTypeArguments )?
                    int alt76=2;
                    int LA76_0 = input.LA(1);

                    if ( (LA76_0==LT) ) {
                        alt76=1;
                    }
                    switch (alt76) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:10: nw= nonWildcardTypeArguments
                            {
                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation6803);
                            nw=nonWildcardTypeArguments();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              typeArgs = (nw!=null?nw.list:null);
                                              supPos = ((AntlrJavacToken) (nw!=null?((Token)nw.start):null)).getStartIndex();
                                          
                            }

                            }
                            break;

                    }

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1992:9: (ths= 'this' | sup= 'super' )
                    int alt77=2;
                    int LA77_0 = input.LA(1);

                    if ( (LA77_0==THIS) ) {
                        alt77=1;
                    }
                    else if ( (LA77_0==SUPER) ) {
                        alt77=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 77, 0, input);

                        throw nvae;
                    }
                    switch (alt77) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1992:10: ths= 'this'
                            {
                            ths=(Token)match(input,THIS,FOLLOW_THIS_in_explicitConstructorInvocation6846); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              expr = T.at(((AntlrJavacToken) ths).getStartIndex()).Ident(names._this);
                                              pu.storeEnd(expr, ths);
                                          
                            }

                            }
                            break;
                        case 2 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1997:13: sup= 'super'
                            {
                            sup=(Token)match(input,SUPER,FOLLOW_SUPER_in_explicitConstructorInvocation6876); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              if (supPos == 0)
                                                  supPos = ((AntlrJavacToken) sup).getStartIndex();
                                              expr = T.at(supPos).Ident(names._super);
                                          
                            }

                            }
                            break;

                    }

                    pushFollow(FOLLOW_arguments_in_explicitConstructorInvocation6912);
                    ag1=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,SEMI,FOLLOW_SEMI_in_explicitConstructorInvocation6914); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(((AntlrJavacToken) (ag1!=null?((Token)ag1.start):null)).getStartIndex()).Apply(typeArgs, expr, (ag1!=null?ag1.list:null));
                                      pu.storeEnd(expr, (ag1!=null?((Token)ag1.stop):null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2010:9: pr= primary dt2= '.' (nw2= nonWildcardTypeArguments )? sup2= 'super' ag2= arguments ';'
                    {
                    pushFollow(FOLLOW_primary_in_explicitConstructorInvocation6941);
                    pr=primary();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = (pr!=null?pr.tree:null);
                                  
                    }
                    dt2=(Token)match(input,DOT,FOLLOW_DOT_in_explicitConstructorInvocation6967); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2015:9: (nw2= nonWildcardTypeArguments )?
                    int alt78=2;
                    int LA78_0 = input.LA(1);

                    if ( (LA78_0==LT) ) {
                        alt78=1;
                    }
                    switch (alt78) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2015:10: nw2= nonWildcardTypeArguments
                            {
                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation6980);
                            nw2=nonWildcardTypeArguments();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              typeArgs = (nw2!=null?nw2.list:null);
                                          
                            }

                            }
                            break;

                    }

                    sup2=(Token)match(input,SUPER,FOLLOW_SUPER_in_explicitConstructorInvocation7017); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(((AntlrJavacToken) dt2).getStartIndex()).Select(expr, names._super);
                                      pu.storeEnd(expr, sup2);
                                  
                    }
                    pushFollow(FOLLOW_arguments_in_explicitConstructorInvocation7043);
                    ag2=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,SEMI,FOLLOW_SEMI_in_explicitConstructorInvocation7045); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(((AntlrJavacToken) (ag2!=null?((Token)ag2.start):null)).getStartIndex()).Apply(typeArgs, expr, (ag2!=null?ag2.list:null));
                                      pu.storeEnd(expr,(ag2!=null?((Token)ag2.stop):null));
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(((AntlrJavacToken) ((Token)retval.start)).getStartIndex()).Exec(pu.checkExprStat(expr));
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 42, explicitConstructorInvocation_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "explicitConstructorInvocation"


    // $ANTLR start "qualifiedName"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2032:1: qualifiedName returns [JCExpression tree] : id1= IDENTIFIER (dt= '.' id2= IDENTIFIER )* ;
    public final JCExpression qualifiedName() throws RecognitionException {
        JCExpression tree = null;
        int qualifiedName_StartIndex = input.index();
        Token id1=null;
        Token dt=null;
        Token id2=null;


                    JCExpression pid = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2039:5: (id1= IDENTIFIER (dt= '.' id2= IDENTIFIER )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2039:9: id1= IDENTIFIER (dt= '.' id2= IDENTIFIER )*
            {
            id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedName7110); if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              pid = T.at(((AntlrJavacToken) id1).getStartIndex()).Ident(((AntlrJavacToken) id1).name);
                              pu.storeEnd(pid, id1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2044:9: (dt= '.' id2= IDENTIFIER )*
            loop80:
            do {
                int alt80=2;
                int LA80_0 = input.LA(1);

                if ( (LA80_0==DOT) ) {
                    alt80=1;
                }


                switch (alt80) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2044:10: dt= '.' id2= IDENTIFIER
            	    {
            	    dt=(Token)match(input,DOT,FOLLOW_DOT_in_qualifiedName7137); if (state.failed) return tree;
            	    id2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedName7141); if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      pid = T.at(((AntlrJavacToken) dt).getStartIndex()).Select(pid, ((AntlrJavacToken) id2).name);
            	                      pu.storeEnd(pid, id2);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop80;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = pid;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 43, qualifiedName_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "qualifiedName"

    public static class annotations_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCAnnotation> list;
    };

    // $ANTLR start "annotations"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2052:1: annotations returns [com.sun.tools.javac.util.List<JCAnnotation> list] : (an= annotation )+ ;
    public final JavaParser.annotations_return annotations() throws RecognitionException {
        JavaParser.annotations_return retval = new JavaParser.annotations_return();
        retval.start = input.LT(1);
        int annotations_StartIndex = input.index();
        JavaParser.annotation_return an = null;



                    ListBuffer<JCAnnotation> buf = new ListBuffer<JCAnnotation>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2059:5: ( (an= annotation )+ )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2059:9: (an= annotation )+
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2059:9: (an= annotation )+
            int cnt81=0;
            loop81:
            do {
                int alt81=2;
                int LA81_0 = input.LA(1);

                if ( (LA81_0==MONKEYS_AT) ) {
                    alt81=1;
                }


                switch (alt81) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2059:10: an= annotation
            	    {
            	    pushFollow(FOLLOW_annotation_in_annotations7218);
            	    an=annotation();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      buf.append((an!=null?an.tree:null));
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    if ( cnt81 >= 1 ) break loop81;
            	    if (state.backtracking>0) {state.failed=true; return retval;}
                        EarlyExitException eee =
                            new EarlyExitException(81, input);
                        throw eee;
                }
                cnt81++;
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 44, annotations_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "annotations"

    public static class annotation_return extends ParserRuleReturnScope {
        public JCAnnotation tree;
    };

    // $ANTLR start "annotation"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2067:1: annotation returns [JCAnnotation tree] : at1= '@' qualifiedName ( '(' ( elementValuePairs | elementValue )? ')' )? ;
    public final JavaParser.annotation_return annotation() throws RecognitionException {
        JavaParser.annotation_return retval = new JavaParser.annotation_return();
        retval.start = input.LT(1);
        int annotation_StartIndex = input.index();
        Token at1=null;
        JCExpression qualifiedName62 = null;

        com.sun.tools.javac.util.List<JCExpression> elementValuePairs63 = null;

        JavaParser.elementValue_return elementValue64 = null;



                    JCTree annoName = null;
                    ListBuffer<JCExpression> buf = new ListBuffer<JCExpression>();
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2081:5: (at1= '@' qualifiedName ( '(' ( elementValuePairs | elementValue )? ')' )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2081:9: at1= '@' qualifiedName ( '(' ( elementValuePairs | elementValue )? ')' )?
            {
            at1=(Token)match(input,MONKEYS_AT,FOLLOW_MONKEYS_AT_in_annotation7297); if (state.failed) return retval;
            pushFollow(FOLLOW_qualifiedName_in_annotation7299);
            qualifiedName62=qualifiedName();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              annoName = qualifiedName62;
                              checkAnnotation(at1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2086:9: ( '(' ( elementValuePairs | elementValue )? ')' )?
            int alt83=2;
            int LA83_0 = input.LA(1);

            if ( (LA83_0==LPAREN) ) {
                alt83=1;
            }
            switch (alt83) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2086:13: '(' ( elementValuePairs | elementValue )? ')'
                    {
                    match(input,LPAREN,FOLLOW_LPAREN_in_annotation7327); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2087:19: ( elementValuePairs | elementValue )?
                    int alt82=3;
                    int LA82_0 = input.LA(1);

                    if ( (LA82_0==IDENTIFIER) ) {
                        int LA82_1 = input.LA(2);

                        if ( (LA82_1==EQ) ) {
                            alt82=1;
                        }
                        else if ( (LA82_1==INSTANCEOF||(LA82_1>=LPAREN && LA82_1<=RPAREN)||LA82_1==LBRACKET||LA82_1==DOT||(LA82_1>=GT && LA82_1<=LT)||LA82_1==QUES||LA82_1==EQEQ||(LA82_1>=BANGEQ && LA82_1<=PERCENT)) ) {
                            alt82=2;
                        }
                    }
                    else if ( (LA82_0==BOOLEAN||LA82_0==BYTE||LA82_0==CHAR||LA82_0==DOUBLE||LA82_0==FLOAT||LA82_0==INT||LA82_0==LONG||LA82_0==NEW||LA82_0==SHORT||LA82_0==SUPER||LA82_0==THIS||LA82_0==VOID||(LA82_0>=INTLITERAL && LA82_0<=LPAREN)||LA82_0==LBRACE||(LA82_0>=BANG && LA82_0<=TILDE)||(LA82_0>=PLUSPLUS && LA82_0<=SUB)||LA82_0==MONKEYS_AT) ) {
                        alt82=2;
                    }
                    switch (alt82) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2087:23: elementValuePairs
                            {
                            pushFollow(FOLLOW_elementValuePairs_in_annotation7354);
                            elementValuePairs63=elementValuePairs();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                            buf.appendList(elementValuePairs63);
                                                        
                            }

                            }
                            break;
                        case 2 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2091:23: elementValue
                            {
                            pushFollow(FOLLOW_elementValue_in_annotation7406);
                            elementValue64=elementValue();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                            buf.append((elementValue64!=null?elementValue64.tree:null));
                                                        
                            }

                            }
                            break;

                    }

                    match(input,RPAREN,FOLLOW_RPAREN_in_annotation7470); if (state.failed) return retval;

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Annotation(annoName, buf.toList());
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 45, annotation_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "annotation"


    // $ANTLR start "elementValuePairs"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2100:1: elementValuePairs returns [com.sun.tools.javac.util.List<JCExpression> list] : el= elementValuePair ( ',' el2= elementValuePair )* ;
    public final com.sun.tools.javac.util.List<JCExpression> elementValuePairs() throws RecognitionException {
        com.sun.tools.javac.util.List<JCExpression> list = null;
        int elementValuePairs_StartIndex = input.index();
        JCExpression el = null;

        JCExpression el2 = null;



                    ListBuffer<JCExpression> buf = new ListBuffer<JCExpression>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2107:5: (el= elementValuePair ( ',' el2= elementValuePair )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2107:9: el= elementValuePair ( ',' el2= elementValuePair )*
            {
            pushFollow(FOLLOW_elementValuePair_in_elementValuePairs7533);
            el=elementValuePair();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              buf.append(el);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2111:9: ( ',' el2= elementValuePair )*
            loop84:
            do {
                int alt84=2;
                int LA84_0 = input.LA(1);

                if ( (LA84_0==COMMA) ) {
                    alt84=1;
                }


                switch (alt84) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2111:10: ',' el2= elementValuePair
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_elementValuePairs7558); if (state.failed) return list;
            	    pushFollow(FOLLOW_elementValuePair_in_elementValuePairs7562);
            	    el2=elementValuePair();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      buf.append(el2);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop84;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 46, elementValuePairs_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "elementValuePairs"


    // $ANTLR start "elementValuePair"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2118:1: elementValuePair returns [JCExpression tree] : IDENTIFIER eq= '=' elementValue ;
    public final JCExpression elementValuePair() throws RecognitionException {
        JCExpression tree = null;
        int elementValuePair_StartIndex = input.index();
        Token eq=null;
        Token IDENTIFIER65=null;
        JavaParser.elementValue_return elementValue66 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 47) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2119:5: ( IDENTIFIER eq= '=' elementValue )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2119:9: IDENTIFIER eq= '=' elementValue
            {
            IDENTIFIER65=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_elementValuePair7610); if (state.failed) return tree;
            eq=(Token)match(input,EQ,FOLLOW_EQ_in_elementValuePair7614); if (state.failed) return tree;
            pushFollow(FOLLOW_elementValue_in_elementValuePair7616);
            elementValue66=elementValue();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              tree = T.at(((AntlrJavacToken) IDENTIFIER65).getStartIndex()).Ident(((AntlrJavacToken) IDENTIFIER65).name);
                              pu.storeEnd(tree, IDENTIFIER65);
                              tree = T.at(((AntlrJavacToken) eq).getStartIndex()).Assign(tree, (elementValue66!=null?elementValue66.tree:null));
                              pu.storeEnd(tree, (elementValue66!=null?((Token)elementValue66.stop):null));
                          
            }

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 47, elementValuePair_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "elementValuePair"

    public static class elementValue_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "elementValue"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2128:1: elementValue returns [JCExpression tree] : ( conditionalExpression | annotation | elementValueArrayInitializer );
    public final JavaParser.elementValue_return elementValue() throws RecognitionException {
        JavaParser.elementValue_return retval = new JavaParser.elementValue_return();
        retval.start = input.LT(1);
        int elementValue_StartIndex = input.index();
        JCExpression conditionalExpression67 = null;

        JavaParser.annotation_return annotation68 = null;

        JavaParser.elementValueArrayInitializer_return elementValueArrayInitializer69 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 48) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2129:5: ( conditionalExpression | annotation | elementValueArrayInitializer )
            int alt85=3;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
            case BOOLEAN:
            case BYTE:
            case CHAR:
            case DOUBLE:
            case FLOAT:
            case INT:
            case LONG:
            case NEW:
            case SHORT:
            case SUPER:
            case THIS:
            case VOID:
            case INTLITERAL:
            case LONGLITERAL:
            case FLOATLITERAL:
            case DOUBLELITERAL:
            case CHARLITERAL:
            case STRINGLITERAL:
            case TRUE:
            case FALSE:
            case NULL:
            case LPAREN:
            case BANG:
            case TILDE:
            case PLUSPLUS:
            case SUBSUB:
            case PLUS:
            case SUB:
                {
                alt85=1;
                }
                break;
            case MONKEYS_AT:
                {
                alt85=2;
                }
                break;
            case LBRACE:
                {
                alt85=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 85, 0, input);

                throw nvae;
            }

            switch (alt85) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2129:9: conditionalExpression
                    {
                    pushFollow(FOLLOW_conditionalExpression_in_elementValue7653);
                    conditionalExpression67=conditionalExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = conditionalExpression67;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2133:9: annotation
                    {
                    pushFollow(FOLLOW_annotation_in_elementValue7677);
                    annotation68=annotation();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = (annotation68!=null?annotation68.tree:null);
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2137:9: elementValueArrayInitializer
                    {
                    pushFollow(FOLLOW_elementValueArrayInitializer_in_elementValue7701);
                    elementValueArrayInitializer69=elementValueArrayInitializer();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = (elementValueArrayInitializer69!=null?elementValueArrayInitializer69.tree:null);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 48, elementValue_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "elementValue"

    public static class elementValueArrayInitializer_return extends ParserRuleReturnScope {
        public JCNewArray tree;
    };

    // $ANTLR start "elementValueArrayInitializer"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2143:1: elementValueArrayInitializer returns [JCNewArray tree] : lbr= '{' (el1= elementValue ( ',' el2= elementValue )* )? ( ',' )? '}' ;
    public final JavaParser.elementValueArrayInitializer_return elementValueArrayInitializer() throws RecognitionException {
        JavaParser.elementValueArrayInitializer_return retval = new JavaParser.elementValueArrayInitializer_return();
        retval.start = input.LT(1);
        int elementValueArrayInitializer_StartIndex = input.index();
        Token lbr=null;
        JavaParser.elementValue_return el1 = null;

        JavaParser.elementValue_return el2 = null;



                    ListBuffer<JCExpression> buf = new ListBuffer<JCExpression>();
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 49) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2152:5: (lbr= '{' (el1= elementValue ( ',' el2= elementValue )* )? ( ',' )? '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2152:9: lbr= '{' (el1= elementValue ( ',' el2= elementValue )* )? ( ',' )? '}'
            {
            lbr=(Token)match(input,LBRACE,FOLLOW_LBRACE_in_elementValueArrayInitializer7766); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              pos = ((AntlrJavacToken) lbr).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2156:9: (el1= elementValue ( ',' el2= elementValue )* )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==IDENTIFIER||LA87_0==BOOLEAN||LA87_0==BYTE||LA87_0==CHAR||LA87_0==DOUBLE||LA87_0==FLOAT||LA87_0==INT||LA87_0==LONG||LA87_0==NEW||LA87_0==SHORT||LA87_0==SUPER||LA87_0==THIS||LA87_0==VOID||(LA87_0>=INTLITERAL && LA87_0<=LPAREN)||LA87_0==LBRACE||(LA87_0>=BANG && LA87_0<=TILDE)||(LA87_0>=PLUSPLUS && LA87_0<=SUB)||LA87_0==MONKEYS_AT) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2156:10: el1= elementValue ( ',' el2= elementValue )*
                    {
                    pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer7793);
                    el1=elementValue();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          buf.append((el1!=null?el1.tree:null));
                                      
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2160:13: ( ',' el2= elementValue )*
                    loop86:
                    do {
                        int alt86=2;
                        int LA86_0 = input.LA(1);

                        if ( (LA86_0==COMMA) ) {
                            int LA86_1 = input.LA(2);

                            if ( (LA86_1==IDENTIFIER||LA86_1==BOOLEAN||LA86_1==BYTE||LA86_1==CHAR||LA86_1==DOUBLE||LA86_1==FLOAT||LA86_1==INT||LA86_1==LONG||LA86_1==NEW||LA86_1==SHORT||LA86_1==SUPER||LA86_1==THIS||LA86_1==VOID||(LA86_1>=INTLITERAL && LA86_1<=LPAREN)||LA86_1==LBRACE||(LA86_1>=BANG && LA86_1<=TILDE)||(LA86_1>=PLUSPLUS && LA86_1<=SUB)||LA86_1==MONKEYS_AT) ) {
                                alt86=1;
                            }


                        }


                        switch (alt86) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2160:14: ',' el2= elementValue
                    	    {
                    	    match(input,COMMA,FOLLOW_COMMA_in_elementValueArrayInitializer7826); if (state.failed) return retval;
                    	    pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer7830);
                    	    el2=elementValue();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                          buf.append((el2!=null?el2.tree:null));
                    	                      
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop86;
                        }
                    } while (true);


                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2165:12: ( ',' )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==COMMA) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2165:13: ','
                    {
                    match(input,COMMA,FOLLOW_COMMA_in_elementValueArrayInitializer7877); if (state.failed) return retval;

                    }
                    break;

            }

            match(input,RBRACE,FOLLOW_RBRACE_in_elementValueArrayInitializer7881); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).NewArray(null, com.sun.tools.javac.util.List.<JCExpression> nil(), buf.toList());
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 49, elementValueArrayInitializer_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "elementValueArrayInitializer"

    public static class annotationTypeDeclaration_return extends ParserRuleReturnScope {
        public JCClassDecl tree;
    };

    // $ANTLR start "annotationTypeDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2169:1: annotationTypeDeclaration returns [JCClassDecl tree] : modifiers mat= '@' inf= 'interface' IDENTIFIER annotationTypeBody ;
    public final JavaParser.annotationTypeDeclaration_return annotationTypeDeclaration() throws RecognitionException {
        JavaParser.annotationTypeDeclaration_return retval = new JavaParser.annotationTypeDeclaration_return();
        retval.start = input.LT(1);
        int annotationTypeDeclaration_StartIndex = input.index();
        Token mat=null;
        Token inf=null;
        Token IDENTIFIER71=null;
        JavaParser.modifiers_return modifiers70 = null;

        com.sun.tools.javac.util.List<JCTree> annotationTypeBody72 = null;



                    com.sun.tools.javac.util.List<JCExpression> extending = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTree> defs = null;
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCModifiers mods = null;
                    Name name = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 50) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2186:5: ( modifiers mat= '@' inf= 'interface' IDENTIFIER annotationTypeBody )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2186:9: modifiers mat= '@' inf= 'interface' IDENTIFIER annotationTypeBody
            {
            pushFollow(FOLLOW_modifiers_in_annotationTypeDeclaration7933);
            modifiers70=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            mat=(Token)match(input,MONKEYS_AT,FOLLOW_MONKEYS_AT_in_annotationTypeDeclaration7937); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers70!=null?modifiers70.tree:null); mods.flags |= (Flags.ANNOTATION | Flags.INTERFACE);
                              pu.storeEnd(mods, mat);
                              checkAnnotation(mat);
                          
            }
            inf=(Token)match(input,INTERFACE,FOLLOW_INTERFACE_in_annotationTypeDeclaration7963); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              pos = ((AntlrJavacToken) inf).getStartIndex();
                          
            }
            IDENTIFIER71=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_annotationTypeDeclaration7987); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              name = ((AntlrJavacToken) IDENTIFIER71).name;
                          
            }
            pushFollow(FOLLOW_annotationTypeBody_in_annotationTypeDeclaration8011);
            annotationTypeBody72=annotationTypeBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              defs = annotationTypeBody72;
                          
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).ClassDef(mods, name, com.sun.tools.javac.util.List.<JCTypeParameter> nil(), null, extending, defs);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree,dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 50, annotationTypeDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "annotationTypeDeclaration"


    // $ANTLR start "annotationTypeBody"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2207:1: annotationTypeBody returns [com.sun.tools.javac.util.List<JCTree> list] : '{' ( annotationTypeElementDeclaration )* '}' ;
    public final com.sun.tools.javac.util.List<JCTree> annotationTypeBody() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int annotationTypeBody_StartIndex = input.index();
        com.sun.tools.javac.util.List<JCTree> annotationTypeElementDeclaration73 = null;



                    ListBuffer<JCTree> defs = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 51) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2214:5: ( '{' ( annotationTypeElementDeclaration )* '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2214:9: '{' ( annotationTypeElementDeclaration )* '}'
            {
            match(input,LBRACE,FOLLOW_LBRACE_in_annotationTypeBody8075); if (state.failed) return list;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2214:13: ( annotationTypeElementDeclaration )*
            loop89:
            do {
                int alt89=2;
                int LA89_0 = input.LA(1);

                if ( ((LA89_0>=IDENTIFIER && LA89_0<=ABSTRACT)||LA89_0==BOOLEAN||LA89_0==BYTE||(LA89_0>=CHAR && LA89_0<=CLASS)||LA89_0==DOUBLE||LA89_0==ENUM||LA89_0==FINAL||LA89_0==FLOAT||(LA89_0>=INT && LA89_0<=NATIVE)||(LA89_0>=PRIVATE && LA89_0<=PUBLIC)||(LA89_0>=SHORT && LA89_0<=STRICTFP)||LA89_0==SYNCHRONIZED||LA89_0==TRANSIENT||LA89_0==VOLATILE||LA89_0==SEMI||LA89_0==MONKEYS_AT) ) {
                    alt89=1;
                }


                switch (alt89) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2214:14: annotationTypeElementDeclaration
            	    {
            	    pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeBody8078);
            	    annotationTypeElementDeclaration73=annotationTypeElementDeclaration();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      defs.appendList(annotationTypeElementDeclaration73);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop89;
                }
            } while (true);

            match(input,RBRACE,FOLLOW_RBRACE_in_annotationTypeBody8105); if (state.failed) return list;

            }

            if ( state.backtracking==0 ) {

                          list = defs.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 51, annotationTypeBody_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "annotationTypeBody"


    // $ANTLR start "annotationTypeElementDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2221:1: annotationTypeElementDeclaration returns [com.sun.tools.javac.util.List<JCTree> list] : ( annotationMethodDeclaration | interfaceFieldDeclaration | normalClassDeclaration | normalInterfaceDeclaration | enumDeclaration | annotationTypeDeclaration | ';' );
    public final com.sun.tools.javac.util.List<JCTree> annotationTypeElementDeclaration() throws RecognitionException {
        com.sun.tools.javac.util.List<JCTree> list = null;
        int annotationTypeElementDeclaration_StartIndex = input.index();
        JavaParser.annotationMethodDeclaration_return annotationMethodDeclaration74 = null;

        JavaParser.interfaceFieldDeclaration_return interfaceFieldDeclaration75 = null;

        JavaParser.normalClassDeclaration_return normalClassDeclaration76 = null;

        JavaParser.normalInterfaceDeclaration_return normalInterfaceDeclaration77 = null;

        JavaParser.enumDeclaration_return enumDeclaration78 = null;

        JavaParser.annotationTypeDeclaration_return annotationTypeDeclaration79 = null;



                    ListBuffer<JCTree> buf = new ListBuffer<JCTree>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 52) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2231:5: ( annotationMethodDeclaration | interfaceFieldDeclaration | normalClassDeclaration | normalInterfaceDeclaration | enumDeclaration | annotationTypeDeclaration | ';' )
            int alt90=7;
            alt90 = dfa90.predict(input);
            switch (alt90) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2231:9: annotationMethodDeclaration
                    {
                    pushFollow(FOLLOW_annotationMethodDeclaration_in_annotationTypeElementDeclaration8156);
                    annotationMethodDeclaration74=annotationMethodDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((annotationMethodDeclaration74!=null?annotationMethodDeclaration74.tree:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2235:9: interfaceFieldDeclaration
                    {
                    pushFollow(FOLLOW_interfaceFieldDeclaration_in_annotationTypeElementDeclaration8180);
                    interfaceFieldDeclaration75=interfaceFieldDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.appendList((interfaceFieldDeclaration75!=null?interfaceFieldDeclaration75.list:null));
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2239:9: normalClassDeclaration
                    {
                    pushFollow(FOLLOW_normalClassDeclaration_in_annotationTypeElementDeclaration8204);
                    normalClassDeclaration76=normalClassDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((normalClassDeclaration76!=null?normalClassDeclaration76.tree:null));
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2243:9: normalInterfaceDeclaration
                    {
                    pushFollow(FOLLOW_normalInterfaceDeclaration_in_annotationTypeElementDeclaration8228);
                    normalInterfaceDeclaration77=normalInterfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((normalInterfaceDeclaration77!=null?normalInterfaceDeclaration77.tree:null));
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2247:9: enumDeclaration
                    {
                    pushFollow(FOLLOW_enumDeclaration_in_annotationTypeElementDeclaration8252);
                    enumDeclaration78=enumDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((enumDeclaration78!=null?enumDeclaration78.tree:null));
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2251:9: annotationTypeDeclaration
                    {
                    pushFollow(FOLLOW_annotationTypeDeclaration_in_annotationTypeElementDeclaration8276);
                    annotationTypeDeclaration79=annotationTypeDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append((annotationTypeDeclaration79!=null?annotationTypeDeclaration79.tree:null));
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2255:9: ';'
                    {
                    match(input,SEMI,FOLLOW_SEMI_in_annotationTypeElementDeclaration8300); if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      buf.append(T.at(Position.NOPOS).Block(0, com.sun.tools.javac.util.List.<JCStatement> nil()));
                                  
                    }

                    }
                    break;

            }
            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 52, annotationTypeElementDeclaration_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "annotationTypeElementDeclaration"

    public static class annotationMethodDeclaration_return extends ParserRuleReturnScope {
        public JCTree tree;
    };

    // $ANTLR start "annotationMethodDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2261:1: annotationMethodDeclaration returns [JCTree tree] : modifiers type IDENTIFIER '(' ')' ( 'default' elementValue )? ';' ;
    public final JavaParser.annotationMethodDeclaration_return annotationMethodDeclaration() throws RecognitionException {
        JavaParser.annotationMethodDeclaration_return retval = new JavaParser.annotationMethodDeclaration_return();
        retval.start = input.LT(1);
        int annotationMethodDeclaration_StartIndex = input.index();
        Token IDENTIFIER82=null;
        JavaParser.modifiers_return modifiers80 = null;

        JCExpression type81 = null;

        JavaParser.elementValue_return elementValue83 = null;



                    com.sun.tools.javac.util.List<JCVariableDecl> params = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCTypeParameter> typarams = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCExpression> thrown = com.sun.tools.javac.util.List.nil();
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    JCExpression defaultValue = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 53) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2278:5: ( modifiers type IDENTIFIER '(' ')' ( 'default' elementValue )? ';' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2278:9: modifiers type IDENTIFIER '(' ')' ( 'default' elementValue )? ';'
            {
            pushFollow(FOLLOW_modifiers_in_annotationMethodDeclaration8363);
            modifiers80=modifiers();

            state._fsp--;
            if (state.failed) return retval;
            pushFollow(FOLLOW_type_in_annotationMethodDeclaration8365);
            type81=type();

            state._fsp--;
            if (state.failed) return retval;
            IDENTIFIER82=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_annotationMethodDeclaration8367); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (modifiers80!=null?modifiers80.tree:null);
                              type = type81;
                              name = ((AntlrJavacToken) IDENTIFIER82).name;
                              pos = ((AntlrJavacToken) IDENTIFIER82).getStartIndex();
                          
            }
            match(input,LPAREN,FOLLOW_LPAREN_in_annotationMethodDeclaration8391); if (state.failed) return retval;
            match(input,RPAREN,FOLLOW_RPAREN_in_annotationMethodDeclaration8393); if (state.failed) return retval;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2285:17: ( 'default' elementValue )?
            int alt91=2;
            int LA91_0 = input.LA(1);

            if ( (LA91_0==DEFAULT) ) {
                alt91=1;
            }
            switch (alt91) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2285:18: 'default' elementValue
                    {
                    match(input,DEFAULT,FOLLOW_DEFAULT_in_annotationMethodDeclaration8396); if (state.failed) return retval;
                    pushFollow(FOLLOW_elementValue_in_annotationMethodDeclaration8398);
                    elementValue83=elementValue();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          defaultValue = (elementValue83!=null?elementValue83.tree:null);
                                      
                    }

                    }
                    break;

            }

            match(input,SEMI,FOLLOW_SEMI_in_annotationMethodDeclaration8441); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).MethodDef(mods, name, type, typarams, params, thrown, null, defaultValue);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          pu.attach(retval.tree,dc);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 53, annotationMethodDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "annotationMethodDeclaration"

    public static class block_return extends ParserRuleReturnScope {
        public JCBlock tree;
    };

    // $ANTLR start "block"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2293:1: block returns [JCBlock tree] : lbr= '{' (bl= blockStatement )* '}' ;
    public final JavaParser.block_return block() throws RecognitionException {
        JavaParser.block_return retval = new JavaParser.block_return();
        retval.start = input.LT(1);
        int block_StartIndex = input.index();
        Token lbr=null;
        JavaParser.blockStatement_return bl = null;



                    ListBuffer<JCStatement> stats = new ListBuffer<JCStatement>();
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2302:5: (lbr= '{' (bl= blockStatement )* '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2302:9: lbr= '{' (bl= blockStatement )* '}'
            {
            lbr=(Token)match(input,LBRACE,FOLLOW_LBRACE_in_block8496); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              pos = ((AntlrJavacToken) lbr).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2306:9: (bl= blockStatement )*
            loop92:
            do {
                int alt92=2;
                int LA92_0 = input.LA(1);

                if ( ((LA92_0>=IDENTIFIER && LA92_0<=BYTE)||(LA92_0>=CHAR && LA92_0<=CLASS)||LA92_0==CONTINUE||(LA92_0>=DO && LA92_0<=DOUBLE)||LA92_0==ENUM||LA92_0==FINAL||(LA92_0>=FLOAT && LA92_0<=FOR)||LA92_0==IF||(LA92_0>=INT && LA92_0<=NEW)||(LA92_0>=PRIVATE && LA92_0<=THROW)||(LA92_0>=TRANSIENT && LA92_0<=LPAREN)||LA92_0==LBRACE||LA92_0==SEMI||(LA92_0>=BANG && LA92_0<=TILDE)||(LA92_0>=PLUSPLUS && LA92_0<=SUB)||LA92_0==MONKEYS_AT||LA92_0==VAR) ) {
                    alt92=1;
                }


                switch (alt92) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2306:10: bl= blockStatement
            	    {
            	    pushFollow(FOLLOW_blockStatement_in_block8523);
            	    bl=blockStatement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      if ((bl!=null?bl.tree:null) == null) {
            	                          stats.appendList((bl!=null?bl.list:null));
            	                      } else {
            	                          stats.append((bl!=null?bl.tree:null));
            	                      }
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop92;
                }
            } while (true);

            match(input,RBRACE,FOLLOW_RBRACE_in_block8558); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Block(0, stats.toList());
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 54, block_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "block"

    public static class staticBlock_return extends ParserRuleReturnScope {
        public JCBlock tree;
    };

    // $ANTLR start "staticBlock"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2318:1: staticBlock returns [JCBlock tree] : st= 'static' '{' ( blockStatement )* '}' ;
    public final JavaParser.staticBlock_return staticBlock() throws RecognitionException {
        JavaParser.staticBlock_return retval = new JavaParser.staticBlock_return();
        retval.start = input.LT(1);
        int staticBlock_StartIndex = input.index();
        Token st=null;
        JavaParser.blockStatement_return blockStatement84 = null;



                    ListBuffer<JCStatement> stats = new ListBuffer<JCStatement>();
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 55) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2329:5: (st= 'static' '{' ( blockStatement )* '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2329:9: st= 'static' '{' ( blockStatement )* '}'
            {
            st=(Token)match(input,STATIC,FOLLOW_STATIC_in_staticBlock8609); if (state.failed) return retval;
            match(input,LBRACE,FOLLOW_LBRACE_in_staticBlock8611); if (state.failed) return retval;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2329:25: ( blockStatement )*
            loop93:
            do {
                int alt93=2;
                int LA93_0 = input.LA(1);

                if ( ((LA93_0>=IDENTIFIER && LA93_0<=BYTE)||(LA93_0>=CHAR && LA93_0<=CLASS)||LA93_0==CONTINUE||(LA93_0>=DO && LA93_0<=DOUBLE)||LA93_0==ENUM||LA93_0==FINAL||(LA93_0>=FLOAT && LA93_0<=FOR)||LA93_0==IF||(LA93_0>=INT && LA93_0<=NEW)||(LA93_0>=PRIVATE && LA93_0<=THROW)||(LA93_0>=TRANSIENT && LA93_0<=LPAREN)||LA93_0==LBRACE||LA93_0==SEMI||(LA93_0>=BANG && LA93_0<=TILDE)||(LA93_0>=PLUSPLUS && LA93_0<=SUB)||LA93_0==MONKEYS_AT||LA93_0==VAR) ) {
                    alt93=1;
                }


                switch (alt93) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2329:26: blockStatement
            	    {
            	    pushFollow(FOLLOW_blockStatement_in_staticBlock8614);
            	    blockStatement84=blockStatement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      if ((blockStatement84!=null?blockStatement84.tree:null) == null) {
            	                          stats.appendList((blockStatement84!=null?blockStatement84.list:null));
            	                      } else {
            	                          stats.append((blockStatement84!=null?blockStatement84.tree:null));
            	                      }
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop93;
                }
            } while (true);

            match(input,RBRACE,FOLLOW_RBRACE_in_staticBlock8641); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Block(Flags.STATIC, stats.toList());
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                          // construct a dummy static modifiers for end position
                          pu.storeEnd(T.at(pos).Modifiers(Flags.STATIC,  com.sun.tools.javac.util.List.<JCAnnotation>nil()),st);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 55, staticBlock_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "staticBlock"

    public static class blockStatement_return extends ParserRuleReturnScope {
        public JCStatement tree;
        public com.sun.tools.javac.util.List<JCStatement> list;
    };

    // $ANTLR start "blockStatement"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2343:1: blockStatement returns [JCStatement tree, com.sun.tools.javac.util.List<JCStatement> list] : ( ( localVariableHeader )=> localVariableDeclarationStatement | ( typeHeader )=> classOrInterfaceDeclaration | statement );
    public final JavaParser.blockStatement_return blockStatement() throws RecognitionException {
        JavaParser.blockStatement_return retval = new JavaParser.blockStatement_return();
        retval.start = input.LT(1);
        int blockStatement_StartIndex = input.index();
        JavaParser.localVariableDeclarationStatement_return localVariableDeclarationStatement85 = null;

        JCClassDecl classOrInterfaceDeclaration86 = null;

        JCStatement statement87 = null;



                    retval.tree = null;
                    retval.list = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2348:5: ( ( localVariableHeader )=> localVariableDeclarationStatement | ( typeHeader )=> classOrInterfaceDeclaration | statement )
            int alt94=3;
            alt94 = dfa94.predict(input);
            switch (alt94) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2348:9: ( localVariableHeader )=> localVariableDeclarationStatement
                    {
                    pushFollow(FOLLOW_localVariableDeclarationStatement_in_blockStatement8683);
                    localVariableDeclarationStatement85=localVariableDeclarationStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.list = (localVariableDeclarationStatement85!=null?localVariableDeclarationStatement85.list:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2352:9: ( typeHeader )=> classOrInterfaceDeclaration
                    {
                    pushFollow(FOLLOW_classOrInterfaceDeclaration_in_blockStatement8711);
                    classOrInterfaceDeclaration86=classOrInterfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = classOrInterfaceDeclaration86;
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2356:9: statement
                    {
                    pushFollow(FOLLOW_statement_in_blockStatement8735);
                    statement87=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                         
                                      retval.tree = statement87;
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 56, blockStatement_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "blockStatement"

    public static class localVariableDeclarationStatement_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCStatement> list;
    };

    // $ANTLR start "localVariableDeclarationStatement"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2363:1: localVariableDeclarationStatement returns [com.sun.tools.javac.util.List<JCStatement> list] : localVariableDeclaration ';' ;
    public final JavaParser.localVariableDeclarationStatement_return localVariableDeclarationStatement() throws RecognitionException {
        JavaParser.localVariableDeclarationStatement_return retval = new JavaParser.localVariableDeclarationStatement_return();
        retval.start = input.LT(1);
        int localVariableDeclarationStatement_StartIndex = input.index();
        JavaParser.localVariableDeclaration_return localVariableDeclaration88 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 57) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2369:5: ( localVariableDeclaration ';' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2369:9: localVariableDeclaration ';'
            {
            pushFollow(FOLLOW_localVariableDeclaration_in_localVariableDeclarationStatement8786);
            localVariableDeclaration88=localVariableDeclaration();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              retval.list = (localVariableDeclaration88!=null?localVariableDeclaration88.list:null);
                          
            }
            match(input,SEMI,FOLLOW_SEMI_in_localVariableDeclarationStatement8810); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          if (retval.list.isEmpty() == false) {
                              pu.storeEnd(retval.list.last(), ((Token)retval.stop)); // position is the separator position
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 57, localVariableDeclarationStatement_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "localVariableDeclarationStatement"

    public static class localVariableDeclaration_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCStatement> list;
    };

    // $ANTLR start "localVariableDeclaration"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2376:1: localVariableDeclaration returns [com.sun.tools.javac.util.List<JCStatement> list] : variableModifiers ( VAR | type ) va1= variableDeclarator (cm= ',' va2= variableDeclarator )* ;
    public final JavaParser.localVariableDeclaration_return localVariableDeclaration() throws RecognitionException {
        JavaParser.localVariableDeclaration_return retval = new JavaParser.localVariableDeclaration_return();
        retval.start = input.LT(1);
        int localVariableDeclaration_StartIndex = input.index();
        Token cm=null;
        JavaParser.variableDeclarator_return va1 = null;

        JavaParser.variableDeclarator_return va2 = null;

        JavaParser.variableModifiers_return variableModifiers89 = null;

        JCExpression type90 = null;



                    ListBuffer<JCStatement> listBuffer = new ListBuffer<JCStatement>();
                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    JCExpression init = null;
                    JCTree ptree = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 58) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2391:5: ( variableModifiers ( VAR | type ) va1= variableDeclarator (cm= ',' va2= variableDeclarator )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2391:9: variableModifiers ( VAR | type ) va1= variableDeclarator (cm= ',' va2= variableDeclarator )*
            {
            pushFollow(FOLLOW_variableModifiers_in_localVariableDeclaration8859);
            variableModifiers89=variableModifiers();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (variableModifiers89!=null?variableModifiers89.tree:null);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2395:9: ( VAR | type )
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==VAR) ) {
                alt95=1;
            }
            else if ( (LA95_0==IDENTIFIER||LA95_0==BOOLEAN||LA95_0==BYTE||LA95_0==CHAR||LA95_0==DOUBLE||LA95_0==FLOAT||LA95_0==INT||LA95_0==LONG||LA95_0==SHORT) ) {
                alt95=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 95, 0, input);

                throw nvae;
            }
            switch (alt95) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2395:10: VAR
                    {
                    match(input,VAR,FOLLOW_VAR_in_localVariableDeclaration8884); if (state.failed) return retval;

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2396:10: type
                    {
                    pushFollow(FOLLOW_type_in_localVariableDeclaration8898);
                    type90=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                       
                              		type = type90; 
                              	
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_variableDeclarator_in_localVariableDeclaration8941);
            va1=variableDeclarator();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              JCExpression ntype = null;
                              if( type != null )
              	                ntype = pu.makeTypeArray(type,(va1!=null?va1.i:0), (va1!=null?va1.dimPosition:null), (va1!=null?va1.endPosition:null));
                              JCStatement ntype1 = T.at((va1!=null?va1.pos:0)).VarDef(mods, (va1!=null?va1.name:null), ntype, (va1!=null?va1.tree:null));
                              //pu.storeEnd(ntype1, (va1!=null?((Token)va1.stop):null));
                              ptree = ntype1;
                              listBuffer.append(ntype1);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2412:9: (cm= ',' va2= variableDeclarator )*
            loop96:
            do {
                int alt96=2;
                int LA96_0 = input.LA(1);

                if ( (LA96_0==COMMA) ) {
                    alt96=1;
                }


                switch (alt96) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2412:10: cm= ',' va2= variableDeclarator
            	    {
            	    cm=(Token)match(input,COMMA,FOLLOW_COMMA_in_localVariableDeclaration8968); if (state.failed) return retval;
            	    pushFollow(FOLLOW_variableDeclarator_in_localVariableDeclaration8972);
            	    va2=variableDeclarator();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      JCExpression ntype = null;
            	                      if( type != null )
            	      	                ntype = pu.makeTypeArray(type,(va1!=null?va1.i:0), (va1!=null?va1.dimPosition:null), (va1!=null?va1.endPosition:null));
            	                      JCStatement ntype1 = T.at((va2!=null?va2.pos:0)).VarDef(mods, (va2!=null?va2.name:null), ntype, (va2!=null?va2.tree:null));
            	                      pu.storeEnd(ptree, cm);
            	                      ptree = ntype1;
            	                      listBuffer.append(ntype1);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop96;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = listBuffer.toList();
                          if (ptree != null) {
                              pu.storeEnd(ptree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 58, localVariableDeclaration_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "localVariableDeclaration"


    // $ANTLR start "statement"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2425:1: statement returns [JCStatement tree] : (bl= block | (ass= 'assert' | {...}? =>asid= IDENTIFIER ) as1= expression ( ':' as2= expression )? sm1= ';' | ift= 'if' cond= parExpression thenpart= statement ( options {k=1; } : ( 'else' )=> 'else' elsepart= statement )? | fo= forstatement | whl= 'while' pe= parExpression ws= statement | doo= 'do' ds= statement 'while' de= parExpression sm2= ';' | tr= trystatement | swi= 'switch' sp= parExpression '{' sg= switchBlockStatementGroups rbr1= '}' | syn= 'synchronized' sp= parExpression sb= block | rtn= 'return' (rex= expression )? sm5= ';' | thw= 'throw' te= expression smw= ';' | brk= 'break' (id2= IDENTIFIER )? sm7= ';' | cnt= 'continue' (id3= IDENTIFIER )? sm8= ';' | ex3= expression sm3= ';' | id4= IDENTIFIER ':' st4= statement | smi= ';' );
    public final JCStatement statement() throws RecognitionException {
        JCStatement tree = null;
        int statement_StartIndex = input.index();
        Token ass=null;
        Token asid=null;
        Token sm1=null;
        Token ift=null;
        Token whl=null;
        Token doo=null;
        Token sm2=null;
        Token swi=null;
        Token rbr1=null;
        Token syn=null;
        Token rtn=null;
        Token sm5=null;
        Token thw=null;
        Token smw=null;
        Token brk=null;
        Token id2=null;
        Token sm7=null;
        Token cnt=null;
        Token id3=null;
        Token sm8=null;
        Token sm3=null;
        Token id4=null;
        Token smi=null;
        JavaParser.block_return bl = null;

        JavaParser.expression_return as1 = null;

        JavaParser.expression_return as2 = null;

        JCExpression cond = null;

        JCStatement thenpart = null;

        JCStatement elsepart = null;

        JavaParser.forstatement_return fo = null;

        JCExpression pe = null;

        JCStatement ws = null;

        JCStatement ds = null;

        JCExpression de = null;

        JavaParser.trystatement_return tr = null;

        JCExpression sp = null;

        com.sun.tools.javac.util.List<JCCase> sg = null;

        JavaParser.block_return sb = null;

        JavaParser.expression_return rex = null;

        JavaParser.expression_return te = null;

        JavaParser.expression_return ex3 = null;

        JCStatement st4 = null;



                    boolean flag = false;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 59) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2429:5: (bl= block | (ass= 'assert' | {...}? =>asid= IDENTIFIER ) as1= expression ( ':' as2= expression )? sm1= ';' | ift= 'if' cond= parExpression thenpart= statement ( options {k=1; } : ( 'else' )=> 'else' elsepart= statement )? | fo= forstatement | whl= 'while' pe= parExpression ws= statement | doo= 'do' ds= statement 'while' de= parExpression sm2= ';' | tr= trystatement | swi= 'switch' sp= parExpression '{' sg= switchBlockStatementGroups rbr1= '}' | syn= 'synchronized' sp= parExpression sb= block | rtn= 'return' (rex= expression )? sm5= ';' | thw= 'throw' te= expression smw= ';' | brk= 'break' (id2= IDENTIFIER )? sm7= ';' | cnt= 'continue' (id3= IDENTIFIER )? sm8= ';' | ex3= expression sm3= ';' | id4= IDENTIFIER ':' st4= statement | smi= ';' )
            int alt103=16;
            alt103 = dfa103.predict(input);
            switch (alt103) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2429:9: bl= block
                    {
                    pushFollow(FOLLOW_block_in_statement9035);
                    bl=block();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = (bl!=null?bl.tree:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:9: (ass= 'assert' | {...}? =>asid= IDENTIFIER ) as1= expression ( ':' as2= expression )? sm1= ';'
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:9: (ass= 'assert' | {...}? =>asid= IDENTIFIER )
                    int alt97=2;
                    int LA97_0 = input.LA(1);

                    if ( (LA97_0==ASSERT) ) {
                        alt97=1;
                    }
                    else if ( (LA97_0==IDENTIFIER) && ((source.allowAsserts()==false&&input.LT(1).getText().equals("assert")))) {
                        alt97=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return tree;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 97, 0, input);

                        throw nvae;
                    }
                    switch (alt97) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:14: ass= 'assert'
                            {
                            ass=(Token)match(input,ASSERT,FOLLOW_ASSERT_in_statement9080); if (state.failed) return tree;

                            }
                            break;
                        case 2 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2435:14: {...}? =>asid= IDENTIFIER
                            {
                            if ( !((source.allowAsserts()==false&&input.LT(1).getText().equals("assert"))) ) {
                                if (state.backtracking>0) {state.failed=true; return tree;}
                                throw new FailedPredicateException(input, "statement", "source.allowAsserts()==false&&input.LT(1).getText().equals(\"assert\")");
                            }
                            asid=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement9101); if (state.failed) return tree;
                            if ( state.backtracking==0 ) {

                                                  checkAssert(asid);
                                               
                            }

                            }
                            break;

                    }

                    pushFollow(FOLLOW_expression_in_statement9142);
                    as1=expression();

                    state._fsp--;
                    if (state.failed) return tree;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2440:24: ( ':' as2= expression )?
                    int alt98=2;
                    int LA98_0 = input.LA(1);

                    if ( (LA98_0==COLON) ) {
                        alt98=1;
                    }
                    switch (alt98) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2440:25: ':' as2= expression
                            {
                            match(input,COLON,FOLLOW_COLON_in_statement9145); if (state.failed) return tree;
                            pushFollow(FOLLOW_expression_in_statement9149);
                            as2=expression();

                            state._fsp--;
                            if (state.failed) return tree;

                            }
                            break;

                    }

                    sm1=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9155); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      int aspos;
                                      if(ass!=null){
                                          aspos = ((AntlrJavacToken) ass).getStartIndex();
                                      }else{
                                          aspos = ((AntlrJavacToken) asid).getStartIndex();
                                      }
                                      
                                      tree = T.at(aspos).Assert((as1!=null?as1.tree:null), (as2!=null?as2.tree:null));
                                      pu.storeEnd(tree, sm1);
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2453:9: ift= 'if' cond= parExpression thenpart= statement ( options {k=1; } : ( 'else' )=> 'else' elsepart= statement )?
                    {
                    ift=(Token)match(input,IF,FOLLOW_IF_in_statement9194); if (state.failed) return tree;
                    pushFollow(FOLLOW_parExpression_in_statement9198);
                    cond=parExpression();

                    state._fsp--;
                    if (state.failed) return tree;
                    pushFollow(FOLLOW_statement_in_statement9202);
                    thenpart=statement();

                    state._fsp--;
                    if (state.failed) return tree;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2453:56: ( options {k=1; } : ( 'else' )=> 'else' elsepart= statement )?
                    int alt99=2;
                    alt99 = dfa99.predict(input);
                    switch (alt99) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2453:73: ( 'else' )=> 'else' elsepart= statement
                            {
                            match(input,ELSE,FOLLOW_ELSE_in_statement9218); if (state.failed) return tree;
                            pushFollow(FOLLOW_statement_in_statement9222);
                            elsepart=statement();

                            state._fsp--;
                            if (state.failed) return tree;

                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {

                                      tree = T.at(((AntlrJavacToken) ift).getStartIndex()).If(cond, thenpart, elsepart);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2457:9: fo= forstatement
                    {
                    pushFollow(FOLLOW_forstatement_in_statement9250);
                    fo=forstatement();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = (fo!=null?fo.tree:null);
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2461:9: whl= 'while' pe= parExpression ws= statement
                    {
                    whl=(Token)match(input,WHILE,FOLLOW_WHILE_in_statement9276); if (state.failed) return tree;
                    pushFollow(FOLLOW_parExpression_in_statement9280);
                    pe=parExpression();

                    state._fsp--;
                    if (state.failed) return tree;
                    pushFollow(FOLLOW_statement_in_statement9284);
                    ws=statement();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      JCExpression cond1 = pe;
                                      JCStatement body1 = ws;
                                      tree = T.at(((AntlrJavacToken) whl).getStartIndex()).WhileLoop(cond1, body1);
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2467:9: doo= 'do' ds= statement 'while' de= parExpression sm2= ';'
                    {
                    doo=(Token)match(input,DO,FOLLOW_DO_in_statement9310); if (state.failed) return tree;
                    pushFollow(FOLLOW_statement_in_statement9314);
                    ds=statement();

                    state._fsp--;
                    if (state.failed) return tree;
                    match(input,WHILE,FOLLOW_WHILE_in_statement9316); if (state.failed) return tree;
                    pushFollow(FOLLOW_parExpression_in_statement9320);
                    de=parExpression();

                    state._fsp--;
                    if (state.failed) return tree;
                    sm2=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9324); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      JCStatement body2 = ds;
                                      JCExpression cond2 = de;
                                      tree = T.at(((AntlrJavacToken) doo).getStartIndex()).DoLoop(body2, cond2);
                                      pu.storeEnd(tree, sm2);
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2474:9: tr= trystatement
                    {
                    pushFollow(FOLLOW_trystatement_in_statement9350);
                    tr=trystatement();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = (tr!=null?tr.tree:null);
                                  
                    }

                    }
                    break;
                case 8 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2478:9: swi= 'switch' sp= parExpression '{' sg= switchBlockStatementGroups rbr1= '}'
                    {
                    swi=(Token)match(input,SWITCH,FOLLOW_SWITCH_in_statement9376); if (state.failed) return tree;
                    pushFollow(FOLLOW_parExpression_in_statement9380);
                    sp=parExpression();

                    state._fsp--;
                    if (state.failed) return tree;
                    match(input,LBRACE,FOLLOW_LBRACE_in_statement9382); if (state.failed) return tree;
                    pushFollow(FOLLOW_switchBlockStatementGroups_in_statement9386);
                    sg=switchBlockStatementGroups();

                    state._fsp--;
                    if (state.failed) return tree;
                    rbr1=(Token)match(input,RBRACE,FOLLOW_RBRACE_in_statement9390); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      JCExpression selector = sp;
                                      com.sun.tools.javac.util.List<JCCase> cases = sg;
                                      tree = T.at(((AntlrJavacToken) swi).getStartIndex()).Switch(selector, cases);
                                      pu.storeEnd(tree, rbr1);
                                  
                    }

                    }
                    break;
                case 9 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2485:9: syn= 'synchronized' sp= parExpression sb= block
                    {
                    syn=(Token)match(input,SYNCHRONIZED,FOLLOW_SYNCHRONIZED_in_statement9416); if (state.failed) return tree;
                    pushFollow(FOLLOW_parExpression_in_statement9420);
                    sp=parExpression();

                    state._fsp--;
                    if (state.failed) return tree;
                    pushFollow(FOLLOW_block_in_statement9424);
                    sb=block();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      JCExpression lock = sp;
                                      JCBlock body = (sb!=null?sb.tree:null);
                                      tree = T.at(((AntlrJavacToken) syn).getStartIndex()).Synchronized(lock, body);
                                  
                    }

                    }
                    break;
                case 10 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2491:9: rtn= 'return' (rex= expression )? sm5= ';'
                    {
                    rtn=(Token)match(input,RETURN,FOLLOW_RETURN_in_statement9450); if (state.failed) return tree;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2491:22: (rex= expression )?
                    int alt100=2;
                    int LA100_0 = input.LA(1);

                    if ( (LA100_0==IDENTIFIER||LA100_0==BOOLEAN||LA100_0==BYTE||LA100_0==CHAR||LA100_0==DOUBLE||LA100_0==FLOAT||LA100_0==INT||LA100_0==LONG||LA100_0==NEW||LA100_0==SHORT||LA100_0==SUPER||LA100_0==THIS||LA100_0==VOID||(LA100_0>=INTLITERAL && LA100_0<=LPAREN)||(LA100_0>=BANG && LA100_0<=TILDE)||(LA100_0>=PLUSPLUS && LA100_0<=SUB)) ) {
                        alt100=1;
                    }
                    switch (alt100) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2491:23: rex= expression
                            {
                            pushFollow(FOLLOW_expression_in_statement9455);
                            rex=expression();

                            state._fsp--;
                            if (state.failed) return tree;
                            if ( state.backtracking==0 ) {
                              flag=true;
                            }

                            }
                            break;

                    }

                    sm5=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9463); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      JCExpression result = null;
                                      if (flag == true) {
                                          result = (rex!=null?rex.tree:null);
                                      }
                                      tree = T.at(((AntlrJavacToken) rtn).getStartIndex()).Return(result);
                                      pu.storeEnd(tree, sm5);
                                  
                    }

                    }
                    break;
                case 11 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2500:9: thw= 'throw' te= expression smw= ';'
                    {
                    thw=(Token)match(input,THROW,FOLLOW_THROW_in_statement9489); if (state.failed) return tree;
                    pushFollow(FOLLOW_expression_in_statement9493);
                    te=expression();

                    state._fsp--;
                    if (state.failed) return tree;
                    smw=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9497); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      JCExpression exc = (te!=null?te.tree:null);
                                      tree = T.at(((AntlrJavacToken) thw).getStartIndex()).Throw(exc);
                                      pu.storeEnd(tree, smw);
                                  
                    }

                    }
                    break;
                case 12 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2506:9: brk= 'break' (id2= IDENTIFIER )? sm7= ';'
                    {
                    brk=(Token)match(input,BREAK,FOLLOW_BREAK_in_statement9523); if (state.failed) return tree;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2507:13: (id2= IDENTIFIER )?
                    int alt101=2;
                    int LA101_0 = input.LA(1);

                    if ( (LA101_0==IDENTIFIER) ) {
                        alt101=1;
                    }
                    switch (alt101) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2507:14: id2= IDENTIFIER
                            {
                            id2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement9540); if (state.failed) return tree;
                            if ( state.backtracking==0 ) {

                                                  flag = true;
                                              
                            }

                            }
                            break;

                    }

                    sm7=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9577); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                          Name label = null;
                                          if (flag == true) {
                                              label = ((AntlrJavacToken) id2).name;
                                          }
                                          tree = T.at(((AntlrJavacToken) brk).getStartIndex()).Break(label);
                                          pu.storeEnd(tree, sm7);
                                      
                    }

                    }
                    break;
                case 13 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2520:9: cnt= 'continue' (id3= IDENTIFIER )? sm8= ';'
                    {
                    cnt=(Token)match(input,CONTINUE,FOLLOW_CONTINUE_in_statement9607); if (state.failed) return tree;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2521:13: (id3= IDENTIFIER )?
                    int alt102=2;
                    int LA102_0 = input.LA(1);

                    if ( (LA102_0==IDENTIFIER) ) {
                        alt102=1;
                    }
                    switch (alt102) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2521:14: id3= IDENTIFIER
                            {
                            id3=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement9624); if (state.failed) return tree;
                            if ( state.backtracking==0 ) {

                                                  flag = true;
                                              
                            }

                            }
                            break;

                    }

                    sm8=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9661); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                          Name label = null;
                                          if (flag == true) {
                                              label = ((AntlrJavacToken) id3).name;
                                          }
                                          tree = T.at(((AntlrJavacToken) cnt).getStartIndex()).Continue(label);
                                          pu.storeEnd(tree, sm8);
                                      
                    }

                    }
                    break;
                case 14 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2534:9: ex3= expression sm3= ';'
                    {
                    pushFollow(FOLLOW_expression_in_statement9691);
                    ex3=expression();

                    state._fsp--;
                    if (state.failed) return tree;
                    sm3=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9696); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {
                        
                                      tree = T.at(((AntlrJavacToken) (ex3!=null?((Token)ex3.start):null)).getStartIndex()).Exec(pu.checkExprStat((ex3!=null?ex3.tree:null)));
                                      pu.storeEnd(tree, sm3);
                                  
                    }

                    }
                    break;
                case 15 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2539:9: id4= IDENTIFIER ':' st4= statement
                    {
                    id4=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_statement9727); if (state.failed) return tree;
                    match(input,COLON,FOLLOW_COLON_in_statement9729); if (state.failed) return tree;
                    pushFollow(FOLLOW_statement_in_statement9733);
                    st4=statement();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {
                         
                                      Name name = ((AntlrJavacToken) id4).name;
                                      JCStatement stat = st4;
                                      tree = T.at(((AntlrJavacToken) id4).getStartIndex()).Labelled(name, stat);
                                      //NOTE: error in jc parser,
                                      pu.storeEnd(T.Ident(((AntlrJavacToken) id4).name),id4);
                                  
                    }

                    }
                    break;
                case 16 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2547:9: smi= ';'
                    {
                    smi=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement9759); if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = T.at(((AntlrJavacToken) smi).getStartIndex()).Skip();
                                      pu.storeEnd(tree, smi);
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 59, statement_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "statement"


    // $ANTLR start "switchBlockStatementGroups"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2555:1: switchBlockStatementGroups returns [com.sun.tools.javac.util.List<JCCase> list] : ( switchBlockStatementGroup )* ;
    public final com.sun.tools.javac.util.List<JCCase> switchBlockStatementGroups() throws RecognitionException {
        com.sun.tools.javac.util.List<JCCase> list = null;
        int switchBlockStatementGroups_StartIndex = input.index();
        JavaParser.switchBlockStatementGroup_return switchBlockStatementGroup91 = null;



                    com.sun.tools.javac.util.ListBuffer<JCCase> buf = new com.sun.tools.javac.util.ListBuffer<JCCase>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 60) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2562:5: ( ( switchBlockStatementGroup )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2562:9: ( switchBlockStatementGroup )*
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2562:9: ( switchBlockStatementGroup )*
            loop104:
            do {
                int alt104=2;
                int LA104_0 = input.LA(1);

                if ( (LA104_0==CASE||LA104_0==DEFAULT) ) {
                    alt104=1;
                }


                switch (alt104) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2562:10: switchBlockStatementGroup
            	    {
            	    pushFollow(FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups9824);
            	    switchBlockStatementGroup91=switchBlockStatementGroup();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {
            	      buf.append((switchBlockStatementGroup91!=null?switchBlockStatementGroup91.tree:null));
            	    }

            	    }
            	    break;

            	default :
            	    break loop104;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 60, switchBlockStatementGroups_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "switchBlockStatementGroups"

    public static class switchBlockStatementGroup_return extends ParserRuleReturnScope {
        public JCCase tree;
    };

    // $ANTLR start "switchBlockStatementGroup"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2565:1: switchBlockStatementGroup returns [JCCase tree] : switchLabel ( blockStatement )* ;
    public final JavaParser.switchBlockStatementGroup_return switchBlockStatementGroup() throws RecognitionException {
        JavaParser.switchBlockStatementGroup_return retval = new JavaParser.switchBlockStatementGroup_return();
        retval.start = input.LT(1);
        int switchBlockStatementGroup_StartIndex = input.index();
        JavaParser.switchLabel_return switchLabel92 = null;

        JavaParser.blockStatement_return blockStatement93 = null;



                    com.sun.tools.javac.util.ListBuffer<JCStatement> stmts = new com.sun.tools.javac.util.ListBuffer<JCStatement>();
                    JCExpression pat = null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 61) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2577:5: ( switchLabel ( blockStatement )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2578:9: switchLabel ( blockStatement )*
            {
            pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup9883);
            switchLabel92=switchLabel();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              pat = (switchLabel92!=null?switchLabel92.tree:null);
                              pos = ((AntlrJavacToken) (switchLabel92!=null?((Token)switchLabel92.start):null)).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2583:9: ( blockStatement )*
            loop105:
            do {
                int alt105=2;
                int LA105_0 = input.LA(1);

                if ( ((LA105_0>=IDENTIFIER && LA105_0<=BYTE)||(LA105_0>=CHAR && LA105_0<=CLASS)||LA105_0==CONTINUE||(LA105_0>=DO && LA105_0<=DOUBLE)||LA105_0==ENUM||LA105_0==FINAL||(LA105_0>=FLOAT && LA105_0<=FOR)||LA105_0==IF||(LA105_0>=INT && LA105_0<=NEW)||(LA105_0>=PRIVATE && LA105_0<=THROW)||(LA105_0>=TRANSIENT && LA105_0<=LPAREN)||LA105_0==LBRACE||LA105_0==SEMI||(LA105_0>=BANG && LA105_0<=TILDE)||(LA105_0>=PLUSPLUS && LA105_0<=SUB)||LA105_0==MONKEYS_AT||LA105_0==VAR) ) {
                    alt105=1;
                }


                switch (alt105) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2583:10: blockStatement
            	    {
            	    pushFollow(FOLLOW_blockStatement_in_switchBlockStatementGroup9908);
            	    blockStatement93=blockStatement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      if ((blockStatement93!=null?blockStatement93.tree:null) != null) {
            	                          stmts.append((blockStatement93!=null?blockStatement93.tree:null));
            	                      } else {
            	                          stmts.appendList((blockStatement93!=null?blockStatement93.list:null));
            	                      }
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop105;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Case(pat, stmts.toList());
                          if (stmts.isEmpty()) {
                              pu.storeEnd(retval.tree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 61, switchBlockStatementGroup_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "switchBlockStatementGroup"

    public static class switchLabel_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "switchLabel"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2594:1: switchLabel returns [JCExpression tree] : ( 'case' expression ':' | 'default' ':' );
    public final JavaParser.switchLabel_return switchLabel() throws RecognitionException {
        JavaParser.switchLabel_return retval = new JavaParser.switchLabel_return();
        retval.start = input.LT(1);
        int switchLabel_StartIndex = input.index();
        JavaParser.expression_return expression94 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 62) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2595:5: ( 'case' expression ':' | 'default' ':' )
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==CASE) ) {
                alt106=1;
            }
            else if ( (LA106_0==DEFAULT) ) {
                alt106=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 106, 0, input);

                throw nvae;
            }
            switch (alt106) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2595:9: 'case' expression ':'
                    {
                    match(input,CASE,FOLLOW_CASE_in_switchLabel9956); if (state.failed) return retval;
                    pushFollow(FOLLOW_expression_in_switchLabel9958);
                    expression94=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,COLON,FOLLOW_COLON_in_switchLabel9960); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = (expression94!=null?expression94.tree:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2599:9: 'default' ':'
                    {
                    match(input,DEFAULT,FOLLOW_DEFAULT_in_switchLabel9984); if (state.failed) return retval;
                    match(input,COLON,FOLLOW_COLON_in_switchLabel9986); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = null;
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 62, switchLabel_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "switchLabel"

    public static class trystatement_return extends ParserRuleReturnScope {
        public JCStatement tree;
    };

    // $ANTLR start "trystatement"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2606:1: trystatement returns [JCStatement tree] : 'try' bl= block (ca1= catches 'finally' bl2= block | ca2= catches | 'finally' bl3= block ) ;
    public final JavaParser.trystatement_return trystatement() throws RecognitionException {
        JavaParser.trystatement_return retval = new JavaParser.trystatement_return();
        retval.start = input.LT(1);
        int trystatement_StartIndex = input.index();
        JavaParser.block_return bl = null;

        com.sun.tools.javac.util.List<JCCatch> ca1 = null;

        JavaParser.block_return bl2 = null;

        com.sun.tools.javac.util.List<JCCatch> ca2 = null;

        JavaParser.block_return bl3 = null;



                    com.sun.tools.javac.util.List<JCCatch> catchers = com.sun.tools.javac.util.List.nil();
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                    JCBlock body = null;
                    JCBlock finalizer = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 63) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2616:5: ( 'try' bl= block (ca1= catches 'finally' bl2= block | ca2= catches | 'finally' bl3= block ) )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2616:9: 'try' bl= block (ca1= catches 'finally' bl2= block | ca2= catches | 'finally' bl3= block )
            {
            match(input,TRY,FOLLOW_TRY_in_trystatement10050); if (state.failed) return retval;
            pushFollow(FOLLOW_block_in_trystatement10054);
            bl=block();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              body = (bl!=null?bl.tree:null);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2620:9: (ca1= catches 'finally' bl2= block | ca2= catches | 'finally' bl3= block )
            int alt107=3;
            int LA107_0 = input.LA(1);

            if ( (LA107_0==CATCH) ) {
                int LA107_1 = input.LA(2);

                if ( (synpred149_Java()) ) {
                    alt107=1;
                }
                else if ( (synpred150_Java()) ) {
                    alt107=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 107, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA107_0==FINALLY) ) {
                alt107=3;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 107, 0, input);

                throw nvae;
            }
            switch (alt107) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2620:13: ca1= catches 'finally' bl2= block
                    {
                    pushFollow(FOLLOW_catches_in_trystatement10084);
                    ca1=catches();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,FINALLY,FOLLOW_FINALLY_in_trystatement10086); if (state.failed) return retval;
                    pushFollow(FOLLOW_block_in_trystatement10090);
                    bl2=block();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          catchers = ca1;
                                          finalizer = (bl2!=null?bl2.tree:null);
                                      
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2625:13: ca2= catches
                    {
                    pushFollow(FOLLOW_catches_in_trystatement10124);
                    ca2=catches();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          catchers = ca2;
                                      
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2629:13: 'finally' bl3= block
                    {
                    match(input,FINALLY,FOLLOW_FINALLY_in_trystatement10156); if (state.failed) return retval;
                    pushFollow(FOLLOW_block_in_trystatement10160);
                    bl3=block();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          finalizer = (bl3!=null?bl3.tree:null);
                                      
                    }

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Try(body, catchers, finalizer);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 63, trystatement_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "trystatement"


    // $ANTLR start "catches"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2636:1: catches returns [com.sun.tools.javac.util.List<JCCatch> list] : ca1= catchClause (ca2= catchClause )* ;
    public final com.sun.tools.javac.util.List<JCCatch> catches() throws RecognitionException {
        com.sun.tools.javac.util.List<JCCatch> list = null;
        int catches_StartIndex = input.index();
        JavaParser.catchClause_return ca1 = null;

        JavaParser.catchClause_return ca2 = null;



                    com.sun.tools.javac.util.ListBuffer<JCCatch> buf = new com.sun.tools.javac.util.ListBuffer<JCCatch>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 64) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2643:5: (ca1= catchClause (ca2= catchClause )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2643:9: ca1= catchClause (ca2= catchClause )*
            {
            pushFollow(FOLLOW_catchClause_in_catches10240);
            ca1=catchClause();

            state._fsp--;
            if (state.failed) return list;
            if ( state.backtracking==0 ) {

                              buf.append((ca1!=null?ca1.tree:null));
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2647:9: (ca2= catchClause )*
            loop108:
            do {
                int alt108=2;
                int LA108_0 = input.LA(1);

                if ( (LA108_0==CATCH) ) {
                    alt108=1;
                }


                switch (alt108) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2647:10: ca2= catchClause
            	    {
            	    pushFollow(FOLLOW_catchClause_in_catches10267);
            	    ca2=catchClause();

            	    state._fsp--;
            	    if (state.failed) return list;
            	    if ( state.backtracking==0 ) {

            	                      buf.append((ca2!=null?ca2.tree:null));
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop108;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 64, catches_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "catches"

    public static class catchClause_return extends ParserRuleReturnScope {
        public JCCatch tree;
    };

    // $ANTLR start "catchClause"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2654:1: catchClause returns [JCCatch tree] : 'catch' '(' formalParameter ')' block ;
    public final JavaParser.catchClause_return catchClause() throws RecognitionException {
        JavaParser.catchClause_return retval = new JavaParser.catchClause_return();
        retval.start = input.LT(1);
        int catchClause_StartIndex = input.index();
        JavaParser.formalParameter_return formalParameter95 = null;

        JavaParser.block_return block96 = null;



                     JCVariableDecl formal = null;
                     JCBlock body = null;
                     int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 65) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2663:5: ( 'catch' '(' formalParameter ')' block )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2663:9: 'catch' '(' formalParameter ')' block
            {
            match(input,CATCH,FOLLOW_CATCH_in_catchClause10341); if (state.failed) return retval;
            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause10343); if (state.failed) return retval;
            pushFollow(FOLLOW_formalParameter_in_catchClause10345);
            formalParameter95=formalParameter();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              formal = (formalParameter95!=null?formalParameter95.tree:null);
                          
            }
            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause10369); if (state.failed) return retval;
            pushFollow(FOLLOW_block_in_catchClause10371);
            block96=block();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {
              body = (block96!=null?block96.tree:null);
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).Catch(formal, body);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 65, catchClause_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "catchClause"

    public static class formalParameter_return extends ParserRuleReturnScope {
        public JCVariableDecl tree;
    };

    // $ANTLR start "formalParameter"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2670:1: formalParameter returns [JCVariableDecl tree] : variableModifiers type IDENTIFIER (lbr= '[' rbr= ']' )* ;
    public final JavaParser.formalParameter_return formalParameter() throws RecognitionException {
        JavaParser.formalParameter_return retval = new JavaParser.formalParameter_return();
        retval.start = input.LT(1);
        int formalParameter_StartIndex = input.index();
        Token lbr=null;
        Token rbr=null;
        Token IDENTIFIER99=null;
        JavaParser.variableModifiers_return variableModifiers97 = null;

        JCExpression type98 = null;



                    JCModifiers mods = null;
                    JCExpression type = null;
                    Name name = null;
                    ArrayList<Integer> poss = new ArrayList<Integer>();
                    ArrayList<Integer> eposs = new ArrayList<Integer>();
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 66) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2688:5: ( variableModifiers type IDENTIFIER (lbr= '[' rbr= ']' )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2688:9: variableModifiers type IDENTIFIER (lbr= '[' rbr= ']' )*
            {
            pushFollow(FOLLOW_variableModifiers_in_formalParameter10422);
            variableModifiers97=variableModifiers();

            state._fsp--;
            if (state.failed) return retval;
            pushFollow(FOLLOW_type_in_formalParameter10424);
            type98=type();

            state._fsp--;
            if (state.failed) return retval;
            IDENTIFIER99=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_formalParameter10426); if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              mods = (variableModifiers97!=null?variableModifiers97.tree:null);
                              type = type98;
                              name = ((AntlrJavacToken) IDENTIFIER99).name;
                              pos = ((AntlrJavacToken) IDENTIFIER99).getStartIndex();
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2695:9: (lbr= '[' rbr= ']' )*
            loop109:
            do {
                int alt109=2;
                int LA109_0 = input.LA(1);

                if ( (LA109_0==LBRACKET) ) {
                    alt109=1;
                }


                switch (alt109) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2695:10: lbr= '[' rbr= ']'
            	    {
            	    lbr=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_formalParameter10453); if (state.failed) return retval;
            	    rbr=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_formalParameter10457); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                      poss.add(((AntlrJavacToken) lbr).getStartIndex());
            	                      eposs.add(((AntlrJavacToken) rbr).getStartIndex());
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop109;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          for (ti = poss.size() - 1; ti >= 0; ti--) {
                              type = T.at(poss.get(ti)).TypeArray(type);
                              pu.storeEnd(type, eposs.get(eposs.size() - 1) + 1);
                          }
                          mods.flags = mods.flags | Flags.PARAMETER;
                          retval.tree = T.at(pos).VarDef(mods, name, type, null);
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 66, formalParameter_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "formalParameter"

    public static class forstatement_return extends ParserRuleReturnScope {
        public JCStatement tree;
    };

    // $ANTLR start "forstatement"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2703:1: forstatement returns [JCStatement tree] : ( 'for' '(' variableModifiers type IDENTIFIER cole= ':' ex1= expression ')' st1= statement | 'for' '(' ( forInit )? ';' (ex2= expression )? ';' ( expressionList )? ')' st2= statement );
    public final JavaParser.forstatement_return forstatement() throws RecognitionException {
        JavaParser.forstatement_return retval = new JavaParser.forstatement_return();
        retval.start = input.LT(1);
        int forstatement_StartIndex = input.index();
        Token cole=null;
        Token IDENTIFIER100=null;
        JavaParser.expression_return ex1 = null;

        JCStatement st1 = null;

        JavaParser.expression_return ex2 = null;

        JCStatement st2 = null;

        JavaParser.variableModifiers_return variableModifiers101 = null;

        JCExpression type102 = null;

        com.sun.tools.javac.util.List<JCStatement> forInit103 = null;

        JavaParser.expressionList_return expressionList104 = null;



                    boolean hasInit = false, hasUpdate = false, hasCond = false;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 67) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2708:5: ( 'for' '(' variableModifiers type IDENTIFIER cole= ':' ex1= expression ')' st1= statement | 'for' '(' ( forInit )? ';' (ex2= expression )? ';' ( expressionList )? ')' st2= statement )
            int alt113=2;
            int LA113_0 = input.LA(1);

            if ( (LA113_0==FOR) ) {
                int LA113_1 = input.LA(2);

                if ( (synpred153_Java()) ) {
                    alt113=1;
                }
                else if ( (true) ) {
                    alt113=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 113, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 113, 0, input);

                throw nvae;
            }
            switch (alt113) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2710:9: 'for' '(' variableModifiers type IDENTIFIER cole= ':' ex1= expression ')' st1= statement
                    {
                    match(input,FOR,FOLLOW_FOR_in_forstatement10536); if (state.failed) return retval;
                    match(input,LPAREN,FOLLOW_LPAREN_in_forstatement10538); if (state.failed) return retval;
                    pushFollow(FOLLOW_variableModifiers_in_forstatement10540);
                    variableModifiers101=variableModifiers();

                    state._fsp--;
                    if (state.failed) return retval;
                    pushFollow(FOLLOW_type_in_forstatement10542);
                    type102=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    IDENTIFIER100=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forstatement10544); if (state.failed) return retval;
                    cole=(Token)match(input,COLON,FOLLOW_COLON_in_forstatement10548); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      checkForeach(cole);
                                  
                    }
                    pushFollow(FOLLOW_expression_in_forstatement10576);
                    ex1=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,RPAREN,FOLLOW_RPAREN_in_forstatement10578); if (state.failed) return retval;
                    pushFollow(FOLLOW_statement_in_forstatement10582);
                    st1=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      JCVariableDecl var = T.at(((AntlrJavacToken) IDENTIFIER100).getStartIndex()).VarDef((variableModifiers101!=null?variableModifiers101.tree:null), ((AntlrJavacToken) IDENTIFIER100).name, type102, null);
                                      pu.storeEnd(var, IDENTIFIER100);
                                      JCExpression expr = (ex1!=null?ex1.tree:null);
                                      JCStatement body = st1;
                                      retval.tree = T.at(pos).ForeachLoop(var, expr, body);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2724:9: 'for' '(' ( forInit )? ';' (ex2= expression )? ';' ( expressionList )? ')' st2= statement
                    {
                    match(input,FOR,FOLLOW_FOR_in_forstatement10628); if (state.failed) return retval;
                    match(input,LPAREN,FOLLOW_LPAREN_in_forstatement10630); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2724:19: ( forInit )?
                    int alt110=2;
                    int LA110_0 = input.LA(1);

                    if ( (LA110_0==IDENTIFIER||LA110_0==BOOLEAN||LA110_0==BYTE||LA110_0==CHAR||LA110_0==DOUBLE||LA110_0==FINAL||LA110_0==FLOAT||LA110_0==INT||LA110_0==LONG||LA110_0==NEW||LA110_0==SHORT||LA110_0==SUPER||LA110_0==THIS||LA110_0==VOID||(LA110_0>=INTLITERAL && LA110_0<=LPAREN)||(LA110_0>=BANG && LA110_0<=TILDE)||(LA110_0>=PLUSPLUS && LA110_0<=SUB)||LA110_0==MONKEYS_AT||LA110_0==VAR) ) {
                        alt110=1;
                    }
                    switch (alt110) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2724:20: forInit
                            {
                            pushFollow(FOLLOW_forInit_in_forstatement10633);
                            forInit103=forInit();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                      hasInit = true;
                                                  
                            }

                            }
                            break;

                    }

                    match(input,SEMI,FOLLOW_SEMI_in_forstatement10676); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2728:24: (ex2= expression )?
                    int alt111=2;
                    int LA111_0 = input.LA(1);

                    if ( (LA111_0==IDENTIFIER||LA111_0==BOOLEAN||LA111_0==BYTE||LA111_0==CHAR||LA111_0==DOUBLE||LA111_0==FLOAT||LA111_0==INT||LA111_0==LONG||LA111_0==NEW||LA111_0==SHORT||LA111_0==SUPER||LA111_0==THIS||LA111_0==VOID||(LA111_0>=INTLITERAL && LA111_0<=LPAREN)||(LA111_0>=BANG && LA111_0<=TILDE)||(LA111_0>=PLUSPLUS && LA111_0<=SUB)) ) {
                        alt111=1;
                    }
                    switch (alt111) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2728:25: ex2= expression
                            {
                            pushFollow(FOLLOW_expression_in_forstatement10681);
                            ex2=expression();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                      hasCond = true;
                                                  
                            }

                            }
                            break;

                    }

                    match(input,SEMI,FOLLOW_SEMI_in_forstatement10724); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2732:24: ( expressionList )?
                    int alt112=2;
                    int LA112_0 = input.LA(1);

                    if ( (LA112_0==IDENTIFIER||LA112_0==BOOLEAN||LA112_0==BYTE||LA112_0==CHAR||LA112_0==DOUBLE||LA112_0==FLOAT||LA112_0==INT||LA112_0==LONG||LA112_0==NEW||LA112_0==SHORT||LA112_0==SUPER||LA112_0==THIS||LA112_0==VOID||(LA112_0>=INTLITERAL && LA112_0<=LPAREN)||(LA112_0>=BANG && LA112_0<=TILDE)||(LA112_0>=PLUSPLUS && LA112_0<=SUB)) ) {
                        alt112=1;
                    }
                    switch (alt112) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2732:25: expressionList
                            {
                            pushFollow(FOLLOW_expressionList_in_forstatement10727);
                            expressionList104=expressionList();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                      hasUpdate = true;
                                                  
                            }

                            }
                            break;

                    }

                    match(input,RPAREN,FOLLOW_RPAREN_in_forstatement10770); if (state.failed) return retval;
                    pushFollow(FOLLOW_statement_in_forstatement10774);
                    st2=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      JCExpression cond = null;
                                      if (hasCond == true) {
                                          cond = (ex2!=null?ex2.tree:null);
                                      }
                                      com.sun.tools.javac.util.List<JCStatement> inits;
                                      if (hasInit == false) {
                                          inits = com.sun.tools.javac.util.List.nil();
                                      } else {
                                          inits = forInit103;
                                      }
                                      com.sun.tools.javac.util.List<JCExpressionStatement> steps;
                                      if (hasUpdate == false) {
                                          steps = com.sun.tools.javac.util.List.nil();
                                      } else {
                                          steps = pu.toExprStatementList((expressionList104!=null?expressionList104.list:null), (expressionList104!=null?expressionList104.endPos:null));
                                      }
                                      JCStatement body = st2;
                                      retval.tree = T.at(pos).ForLoop(inits, cond, steps, body);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 67, forstatement_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "forstatement"


    // $ANTLR start "forInit"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2759:1: forInit returns [com.sun.tools.javac.util.List<JCStatement> list] : ( localVariableDeclaration | expressionList );
    public final com.sun.tools.javac.util.List<JCStatement> forInit() throws RecognitionException {
        com.sun.tools.javac.util.List<JCStatement> list = null;
        int forInit_StartIndex = input.index();
        JavaParser.localVariableDeclaration_return localVariableDeclaration105 = null;

        JavaParser.expressionList_return expressionList106 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 68) ) { return list; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2760:5: ( localVariableDeclaration | expressionList )
            int alt114=2;
            alt114 = dfa114.predict(input);
            switch (alt114) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2760:9: localVariableDeclaration
                    {
                    pushFollow(FOLLOW_localVariableDeclaration_in_forInit10811);
                    localVariableDeclaration105=localVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      list = (localVariableDeclaration105!=null?localVariableDeclaration105.list:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2764:9: expressionList
                    {
                    pushFollow(FOLLOW_expressionList_in_forInit10835);
                    expressionList106=expressionList();

                    state._fsp--;
                    if (state.failed) return list;
                    if ( state.backtracking==0 ) {

                                      list = pu.toStatementList((expressionList106!=null?expressionList106.list:null), (expressionList106!=null?expressionList106.endPos:null));
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 68, forInit_StartIndex); }
        }
        return list;
    }
    // $ANTLR end "forInit"


    // $ANTLR start "parExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2770:1: parExpression returns [JCExpression tree] : lbr= '(' expression rbr= ')' ;
    public final JCExpression parExpression() throws RecognitionException {
        JCExpression tree = null;
        int parExpression_StartIndex = input.index();
        Token lbr=null;
        Token rbr=null;
        JavaParser.expression_return expression107 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 69) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2771:5: (lbr= '(' expression rbr= ')' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2771:9: lbr= '(' expression rbr= ')'
            {
            lbr=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_parExpression10874); if (state.failed) return tree;
            pushFollow(FOLLOW_expression_in_parExpression10876);
            expression107=expression();

            state._fsp--;
            if (state.failed) return tree;
            rbr=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_parExpression10880); if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              tree = T.at(((AntlrJavacToken) lbr).getStartIndex()).Parens((expression107!=null?expression107.tree:null));
                              pu.storeEnd(tree, rbr);
                          
            }

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 69, parExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "parExpression"

    public static class expressionList_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCExpression> list;
        public java.util.ArrayList endPos;
    };

    // $ANTLR start "expressionList"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2778:1: expressionList returns [com.sun.tools.javac.util.List<JCExpression> list, java.util.ArrayList endPos] : ex1= expression ( ',' ex2= expression )* ;
    public final JavaParser.expressionList_return expressionList() throws RecognitionException {
        JavaParser.expressionList_return retval = new JavaParser.expressionList_return();
        retval.start = input.LT(1);
        int expressionList_StartIndex = input.index();
        JavaParser.expression_return ex1 = null;

        JavaParser.expression_return ex2 = null;



                    ListBuffer<JCExpression> buf = new ListBuffer<JCExpression>();
                    retval.endPos = new ArrayList();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 70) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2786:5: (ex1= expression ( ',' ex2= expression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2786:9: ex1= expression ( ',' ex2= expression )*
            {
            pushFollow(FOLLOW_expression_in_expressionList10945);
            ex1=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              buf.append((ex1!=null?ex1.tree:null));
                              retval.endPos.add(new Integer(((AntlrJavacToken) (ex1!=null?((Token)ex1.stop):null)).getStopIndex()));
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2791:9: ( ',' ex2= expression )*
            loop115:
            do {
                int alt115=2;
                int LA115_0 = input.LA(1);

                if ( (LA115_0==COMMA) ) {
                    alt115=1;
                }


                switch (alt115) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2791:10: ',' ex2= expression
            	    {
            	    match(input,COMMA,FOLLOW_COMMA_in_expressionList10970); if (state.failed) return retval;
            	    pushFollow(FOLLOW_expression_in_expressionList10974);
            	    ex2=expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                  buf.append((ex2!=null?ex2.tree:null));
            	                  retval.endPos.add(new Integer(((AntlrJavacToken) (ex2!=null?((Token)ex2.stop):null)).getStopIndex()));
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop115;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 70, expressionList_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "expressionList"

    public static class expression_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "expression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2800:1: expression returns [JCExpression tree] : conditionalExpression ( assignmentOperator ex= expression )? ;
    public final JavaParser.expression_return expression() throws RecognitionException {
        JavaParser.expression_return retval = new JavaParser.expression_return();
        retval.start = input.LT(1);
        int expression_StartIndex = input.index();
        JavaParser.expression_return ex = null;

        JCExpression conditionalExpression108 = null;

        JavaParser.assignmentOperator_return assignmentOperator109 = null;



                    JCExpression expr = null, val = null;
                    int opcode = 0;
                    boolean flag = false;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 71) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2819:5: ( conditionalExpression ( assignmentOperator ex= expression )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2819:9: conditionalExpression ( assignmentOperator ex= expression )?
            {
            pushFollow(FOLLOW_conditionalExpression_in_expression11049);
            conditionalExpression108=conditionalExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              expr = conditionalExpression108;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2823:9: ( assignmentOperator ex= expression )?
            int alt116=2;
            int LA116_0 = input.LA(1);

            if ( ((LA116_0>=EQ && LA116_0<=LT)||(LA116_0>=PLUSEQ && LA116_0<=PERCENTEQ)) ) {
                alt116=1;
            }
            switch (alt116) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2823:10: assignmentOperator ex= expression
                    {
                    pushFollow(FOLLOW_assignmentOperator_in_expression11074);
                    assignmentOperator109=assignmentOperator();

                    state._fsp--;
                    if (state.failed) return retval;
                    pushFollow(FOLLOW_expression_in_expression11078);
                    ex=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      opcode = (assignmentOperator109!=null?assignmentOperator109.i:0);
                                      pos = ((AntlrJavacToken) (assignmentOperator109!=null?((Token)assignmentOperator109.start):null)).getStartIndex();
                                      val = (ex!=null?ex.tree:null);
                                  
                    }

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          if (val == null) {
                              retval.tree = expr;
                          } else {
                              if (opcode == -1) {
                                  retval.tree = T.at(pos).Assign(expr, val);
                                  pu.storeEnd(retval.tree, ((Token)retval.stop));
                              } else {
                                  retval.tree = T.at(pos).Assignop(opcode, expr, val);
                              }
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 71, expression_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "expression"

    public static class assignmentOperator_return extends ParserRuleReturnScope {
        public int i;
    };

    // $ANTLR start "assignmentOperator"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2833:1: assignmentOperator returns [int i] : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '=' | ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '=' | ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '=' );
    public final JavaParser.assignmentOperator_return assignmentOperator() throws RecognitionException {
        JavaParser.assignmentOperator_return retval = new JavaParser.assignmentOperator_return();
        retval.start = input.LT(1);
        int assignmentOperator_StartIndex = input.index();
        Token t1=null;
        Token t2=null;
        Token t3=null;
        Token t4=null;

        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 72) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2834:5: ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '=' | ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '=' | ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '=' )
            int alt117=12;
            alt117 = dfa117.predict(input);
            switch (alt117) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2834:9: '='
                    {
                    match(input,EQ,FOLLOW_EQ_in_assignmentOperator11127); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = -1;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2838:9: '+='
                    {
                    match(input,PLUSEQ,FOLLOW_PLUSEQ_in_assignmentOperator11151); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.PLUS_ASG;
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2842:9: '-='
                    {
                    match(input,SUBEQ,FOLLOW_SUBEQ_in_assignmentOperator11175); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.MINUS_ASG;
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2846:9: '*='
                    {
                    match(input,STAREQ,FOLLOW_STAREQ_in_assignmentOperator11199); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.MUL_ASG;
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2850:9: '/='
                    {
                    match(input,SLASHEQ,FOLLOW_SLASHEQ_in_assignmentOperator11223); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.DIV_ASG;
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2854:9: '&='
                    {
                    match(input,AMPEQ,FOLLOW_AMPEQ_in_assignmentOperator11247); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.BITAND_ASG;
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2858:9: '|='
                    {
                    match(input,BAREQ,FOLLOW_BAREQ_in_assignmentOperator11271); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.BITOR_ASG;
                                  
                    }

                    }
                    break;
                case 8 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2862:9: '^='
                    {
                    match(input,CARETEQ,FOLLOW_CARETEQ_in_assignmentOperator11295); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.BITXOR_ASG;
                                  
                    }

                    }
                    break;
                case 9 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2866:9: '%='
                    {
                    match(input,PERCENTEQ,FOLLOW_PERCENTEQ_in_assignmentOperator11319); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.MOD_ASG;
                                  
                    }

                    }
                    break;
                case 10 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2870:9: ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '='
                    {
                    t1=(Token)match(input,LT,FOLLOW_LT_in_assignmentOperator11354); if (state.failed) return retval;
                    t2=(Token)match(input,LT,FOLLOW_LT_in_assignmentOperator11358); if (state.failed) return retval;
                    t3=(Token)match(input,EQ,FOLLOW_EQ_in_assignmentOperator11362); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2, t3) == true) {
                                          retval.i = JCTree.SL_ASG;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;
                case 11 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2878:9: ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '='
                    {
                    t1=(Token)match(input,GT,FOLLOW_GT_in_assignmentOperator11399); if (state.failed) return retval;
                    t2=(Token)match(input,GT,FOLLOW_GT_in_assignmentOperator11403); if (state.failed) return retval;
                    t3=(Token)match(input,GT,FOLLOW_GT_in_assignmentOperator11407); if (state.failed) return retval;
                    t4=(Token)match(input,EQ,FOLLOW_EQ_in_assignmentOperator11411); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2, t3, t4) == true) {
                                          retval.i = JCTree.USR_ASG;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;
                case 12 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2886:9: ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '='
                    {
                    t1=(Token)match(input,GT,FOLLOW_GT_in_assignmentOperator11446); if (state.failed) return retval;
                    t2=(Token)match(input,GT,FOLLOW_GT_in_assignmentOperator11450); if (state.failed) return retval;
                    t3=(Token)match(input,EQ,FOLLOW_EQ_in_assignmentOperator11454); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2, t3) == true) {
                                          retval.i = JCTree.SR_ASG;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 72, assignmentOperator_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "assignmentOperator"


    // $ANTLR start "conditionalExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2896:1: conditionalExpression returns [JCExpression tree] : con= conditionalOrExpression (que= '?' expression ':' ex2= conditionalExpression )? ;
    public final JCExpression conditionalExpression() throws RecognitionException {
        JCExpression tree = null;
        int conditionalExpression_StartIndex = input.index();
        Token que=null;
        JCExpression con = null;

        JCExpression ex2 = null;

        JavaParser.expression_return expression110 = null;



                    JCExpression t=null, t1=null, t2=null;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 73) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2908:5: (con= conditionalOrExpression (que= '?' expression ':' ex2= conditionalExpression )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2908:9: con= conditionalOrExpression (que= '?' expression ':' ex2= conditionalExpression )?
            {
            pushFollow(FOLLOW_conditionalOrExpression_in_conditionalExpression11519);
            con=conditionalOrExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              t=con;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2912:9: (que= '?' expression ':' ex2= conditionalExpression )?
            int alt118=2;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==QUES) ) {
                alt118=1;
            }
            switch (alt118) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2912:10: que= '?' expression ':' ex2= conditionalExpression
                    {
                    que=(Token)match(input,QUES,FOLLOW_QUES_in_conditionalExpression11546); if (state.failed) return tree;
                    pushFollow(FOLLOW_expression_in_conditionalExpression11548);
                    expression110=expression();

                    state._fsp--;
                    if (state.failed) return tree;
                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression11550); if (state.failed) return tree;
                    pushFollow(FOLLOW_conditionalExpression_in_conditionalExpression11554);
                    ex2=conditionalExpression();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      t1 = (expression110!=null?expression110.tree:null);
                                      pos = ((AntlrJavacToken) que).getStartIndex();
                                      t2=ex2;
                                  
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

                          if (t1 == null) {
                              tree = t;
                          } else {
                              tree = T.at(pos).Conditional(t, t1, t2);
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 73, conditionalExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "conditionalExpression"


    // $ANTLR start "conditionalOrExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2921:1: conditionalOrExpression returns [JCExpression tree] : co1= conditionalAndExpression (opr= '||' co2= conditionalAndExpression )* ;
    public final JCExpression conditionalOrExpression() throws RecognitionException {
        JCExpression tree = null;
        int conditionalOrExpression_StartIndex = input.index();
        Token opr=null;
        JCExpression co1 = null;

        JCExpression co2 = null;



                    JCExpression lhs=null, rhs=null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 74) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2928:5: (co1= conditionalAndExpression (opr= '||' co2= conditionalAndExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2928:9: co1= conditionalAndExpression (opr= '||' co2= conditionalAndExpression )*
            {
            pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression11630);
            co1=conditionalAndExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs=co1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2932:9: (opr= '||' co2= conditionalAndExpression )*
            loop119:
            do {
                int alt119=2;
                int LA119_0 = input.LA(1);

                if ( (LA119_0==BARBAR) ) {
                    alt119=1;
                }


                switch (alt119) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2932:10: opr= '||' co2= conditionalAndExpression
            	    {
            	    opr=(Token)match(input,BARBAR,FOLLOW_BARBAR_in_conditionalOrExpression11657); if (state.failed) return tree;
            	    pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression11661);
            	    co2=conditionalAndExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      rhs=co2;
            	                      lhs=T.at(((AntlrJavacToken) opr).getStartIndex()).Binary(JCTree.OR, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop119;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 74, conditionalOrExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "conditionalOrExpression"


    // $ANTLR start "conditionalAndExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2940:1: conditionalAndExpression returns [JCExpression tree] : in1= inclusiveOrExpression (opr= '&&' in2= inclusiveOrExpression )* ;
    public final JCExpression conditionalAndExpression() throws RecognitionException {
        JCExpression tree = null;
        int conditionalAndExpression_StartIndex = input.index();
        Token opr=null;
        JCExpression in1 = null;

        JCExpression in2 = null;



                    JCExpression lhs=null, rhs=null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 75) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2947:5: (in1= inclusiveOrExpression (opr= '&&' in2= inclusiveOrExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2947:9: in1= inclusiveOrExpression (opr= '&&' in2= inclusiveOrExpression )*
            {
            pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression11737);
            in1=inclusiveOrExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs=in1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2951:9: (opr= '&&' in2= inclusiveOrExpression )*
            loop120:
            do {
                int alt120=2;
                int LA120_0 = input.LA(1);

                if ( (LA120_0==AMPAMP) ) {
                    alt120=1;
                }


                switch (alt120) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2951:10: opr= '&&' in2= inclusiveOrExpression
            	    {
            	    opr=(Token)match(input,AMPAMP,FOLLOW_AMPAMP_in_conditionalAndExpression11764); if (state.failed) return tree;
            	    pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression11768);
            	    in2=inclusiveOrExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      rhs=in2;
            	                      lhs=T.at(((AntlrJavacToken) opr).getStartIndex()).Binary(JCTree.AND, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop120;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 75, conditionalAndExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "conditionalAndExpression"


    // $ANTLR start "inclusiveOrExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2959:1: inclusiveOrExpression returns [JCExpression tree] : ex1= exclusiveOrExpression (opr= '|' ex2= exclusiveOrExpression )* ;
    public final JCExpression inclusiveOrExpression() throws RecognitionException {
        JCExpression tree = null;
        int inclusiveOrExpression_StartIndex = input.index();
        Token opr=null;
        JCExpression ex1 = null;

        JCExpression ex2 = null;



                    JCExpression lhs=null, rhs=null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 76) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2966:5: (ex1= exclusiveOrExpression (opr= '|' ex2= exclusiveOrExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2966:9: ex1= exclusiveOrExpression (opr= '|' ex2= exclusiveOrExpression )*
            {
            pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression11844);
            ex1=exclusiveOrExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs = ex1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2970:9: (opr= '|' ex2= exclusiveOrExpression )*
            loop121:
            do {
                int alt121=2;
                int LA121_0 = input.LA(1);

                if ( (LA121_0==BAR) ) {
                    alt121=1;
                }


                switch (alt121) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2970:10: opr= '|' ex2= exclusiveOrExpression
            	    {
            	    opr=(Token)match(input,BAR,FOLLOW_BAR_in_inclusiveOrExpression11871); if (state.failed) return tree;
            	    pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression11875);
            	    ex2=exclusiveOrExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      rhs = ex2;
            	                      lhs = T.at(((AntlrJavacToken) opr).getStartIndex()).Binary(JCTree.BITOR, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop121;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 76, inclusiveOrExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "inclusiveOrExpression"


    // $ANTLR start "exclusiveOrExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2978:1: exclusiveOrExpression returns [JCExpression tree] : an1= andExpression (opr= '^' an2= andExpression )* ;
    public final JCExpression exclusiveOrExpression() throws RecognitionException {
        JCExpression tree = null;
        int exclusiveOrExpression_StartIndex = input.index();
        Token opr=null;
        JCExpression an1 = null;

        JCExpression an2 = null;



                    JCExpression lhs=null, rhs=null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 77) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2985:5: (an1= andExpression (opr= '^' an2= andExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2985:9: an1= andExpression (opr= '^' an2= andExpression )*
            {
            pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression11951);
            an1=andExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs = an1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2989:9: (opr= '^' an2= andExpression )*
            loop122:
            do {
                int alt122=2;
                int LA122_0 = input.LA(1);

                if ( (LA122_0==CARET) ) {
                    alt122=1;
                }


                switch (alt122) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2989:10: opr= '^' an2= andExpression
            	    {
            	    opr=(Token)match(input,CARET,FOLLOW_CARET_in_exclusiveOrExpression11978); if (state.failed) return tree;
            	    pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression11982);
            	    an2=andExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      rhs = an2;
            	                      lhs = T.at(((AntlrJavacToken) opr).getStartIndex()).Binary(JCTree.BITXOR, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop122;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 77, exclusiveOrExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "exclusiveOrExpression"


    // $ANTLR start "andExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2997:1: andExpression returns [JCExpression tree] : eq1= equalityExpression (opr= '&' eq2= equalityExpression )* ;
    public final JCExpression andExpression() throws RecognitionException {
        JCExpression tree = null;
        int andExpression_StartIndex = input.index();
        Token opr=null;
        JCExpression eq1 = null;

        JCExpression eq2 = null;



                    JCExpression lhs=null, rhs=null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 78) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3004:5: (eq1= equalityExpression (opr= '&' eq2= equalityExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3004:9: eq1= equalityExpression (opr= '&' eq2= equalityExpression )*
            {
            pushFollow(FOLLOW_equalityExpression_in_andExpression12058);
            eq1=equalityExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs = eq1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3008:9: (opr= '&' eq2= equalityExpression )*
            loop123:
            do {
                int alt123=2;
                int LA123_0 = input.LA(1);

                if ( (LA123_0==AMP) ) {
                    alt123=1;
                }


                switch (alt123) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3008:10: opr= '&' eq2= equalityExpression
            	    {
            	    opr=(Token)match(input,AMP,FOLLOW_AMP_in_andExpression12085); if (state.failed) return tree;
            	    pushFollow(FOLLOW_equalityExpression_in_andExpression12089);
            	    eq2=equalityExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      rhs = eq2;
            	                      lhs = T.at(((AntlrJavacToken) opr).getStartIndex()).Binary(JCTree.BITAND, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop123;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 78, andExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "andExpression"


    // $ANTLR start "equalityExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3016:1: equalityExpression returns [JCExpression tree] : in1= instanceOfExpression ( (eqeq= '==' | beq= '!=' ) in2= instanceOfExpression )* ;
    public final JCExpression equalityExpression() throws RecognitionException {
        JCExpression tree = null;
        int equalityExpression_StartIndex = input.index();
        Token eqeq=null;
        Token beq=null;
        JCExpression in1 = null;

        JCExpression in2 = null;



                    JCExpression lhs=null, rhs=null;
                    com.sun.tools.javac.parser.Token token=null;
                    int opcode=0;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 79) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3026:5: (in1= instanceOfExpression ( (eqeq= '==' | beq= '!=' ) in2= instanceOfExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3026:9: in1= instanceOfExpression ( (eqeq= '==' | beq= '!=' ) in2= instanceOfExpression )*
            {
            pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression12165);
            in1=instanceOfExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs=in1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3030:9: ( (eqeq= '==' | beq= '!=' ) in2= instanceOfExpression )*
            loop125:
            do {
                int alt125=2;
                int LA125_0 = input.LA(1);

                if ( (LA125_0==EQEQ||LA125_0==BANGEQ) ) {
                    alt125=1;
                }


                switch (alt125) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3031:13: (eqeq= '==' | beq= '!=' ) in2= instanceOfExpression
            	    {
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3031:13: (eqeq= '==' | beq= '!=' )
            	    int alt124=2;
            	    int LA124_0 = input.LA(1);

            	    if ( (LA124_0==EQEQ) ) {
            	        alt124=1;
            	    }
            	    else if ( (LA124_0==BANGEQ) ) {
            	        alt124=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return tree;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 124, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt124) {
            	        case 1 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3031:17: eqeq= '=='
            	            {
            	            eqeq=(Token)match(input,EQEQ,FOLLOW_EQEQ_in_equalityExpression12212); if (state.failed) return tree;
            	            if ( state.backtracking==0 ) {

            	                                  opcode=JCTree.EQ;
            	                                  pos = ((AntlrJavacToken) eqeq).getStartIndex();
            	                              
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3036:17: beq= '!='
            	            {
            	            beq=(Token)match(input,BANGEQ,FOLLOW_BANGEQ_in_equalityExpression12250); if (state.failed) return tree;
            	            if ( state.backtracking==0 ) {

            	                                  opcode=JCTree.NE;
            	                                  pos = ((AntlrJavacToken) beq).getStartIndex();
            	                              
            	            }

            	            }
            	            break;

            	    }

            	    pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression12298);
            	    in2=instanceOfExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                          rhs=in2;
            	                          lhs=T.at(pos).Binary(opcode, lhs, rhs);
            	                      
            	    }

            	    }
            	    break;

            	default :
            	    break loop125;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 79, equalityExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "equalityExpression"


    // $ANTLR start "instanceOfExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3050:1: instanceOfExpression returns [JCExpression tree] : rex= relationalExpression (opr= 'instanceof' ty= type )? ;
    public final JCExpression instanceOfExpression() throws RecognitionException {
        JCExpression tree = null;
        int instanceOfExpression_StartIndex = input.index();
        Token opr=null;
        JCExpression rex = null;

        JCExpression ty = null;



                    JCExpression lhs=null, rhs=null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 80) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3057:5: (rex= relationalExpression (opr= 'instanceof' ty= type )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3057:9: rex= relationalExpression (opr= 'instanceof' ty= type )?
            {
            pushFollow(FOLLOW_relationalExpression_in_instanceOfExpression12378);
            rex=relationalExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs = rex;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3061:9: (opr= 'instanceof' ty= type )?
            int alt126=2;
            int LA126_0 = input.LA(1);

            if ( (LA126_0==INSTANCEOF) ) {
                alt126=1;
            }
            switch (alt126) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3061:10: opr= 'instanceof' ty= type
                    {
                    opr=(Token)match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceOfExpression12405); if (state.failed) return tree;
                    pushFollow(FOLLOW_type_in_instanceOfExpression12409);
                    ty=type();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      rhs = ty;
                                      lhs = T.at(((AntlrJavacToken) opr).getStartIndex()).TypeTest(lhs, rhs);
                                  
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 80, instanceOfExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "instanceOfExpression"


    // $ANTLR start "relationalExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3069:1: relationalExpression returns [JCExpression tree] : sh1= shiftExpression (op= relationalOp sh2= shiftExpression )* ;
    public final JCExpression relationalExpression() throws RecognitionException {
        JCExpression tree = null;
        int relationalExpression_StartIndex = input.index();
        JCExpression sh1 = null;

        JavaParser.relationalOp_return op = null;

        JCExpression sh2 = null;



                    JCExpression lhs=null, rhs=null;
                    int opcode = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 81) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3077:5: (sh1= shiftExpression (op= relationalOp sh2= shiftExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3077:9: sh1= shiftExpression (op= relationalOp sh2= shiftExpression )*
            {
            pushFollow(FOLLOW_shiftExpression_in_relationalExpression12485);
            sh1=shiftExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs=sh1;
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3081:9: (op= relationalOp sh2= shiftExpression )*
            loop127:
            do {
                int alt127=2;
                int LA127_0 = input.LA(1);

                if ( (LA127_0==LT) ) {
                    int LA127_2 = input.LA(2);

                    if ( (LA127_2==IDENTIFIER||LA127_2==BOOLEAN||LA127_2==BYTE||LA127_2==CHAR||LA127_2==DOUBLE||LA127_2==FLOAT||LA127_2==INT||LA127_2==LONG||LA127_2==NEW||LA127_2==SHORT||LA127_2==SUPER||LA127_2==THIS||LA127_2==VOID||(LA127_2>=INTLITERAL && LA127_2<=LPAREN)||LA127_2==EQ||(LA127_2>=BANG && LA127_2<=TILDE)||(LA127_2>=PLUSPLUS && LA127_2<=SUB)) ) {
                        alt127=1;
                    }


                }
                else if ( (LA127_0==GT) ) {
                    int LA127_3 = input.LA(2);

                    if ( (LA127_3==IDENTIFIER||LA127_3==BOOLEAN||LA127_3==BYTE||LA127_3==CHAR||LA127_3==DOUBLE||LA127_3==FLOAT||LA127_3==INT||LA127_3==LONG||LA127_3==NEW||LA127_3==SHORT||LA127_3==SUPER||LA127_3==THIS||LA127_3==VOID||(LA127_3>=INTLITERAL && LA127_3<=LPAREN)||LA127_3==EQ||(LA127_3>=BANG && LA127_3<=TILDE)||(LA127_3>=PLUSPLUS && LA127_3<=SUB)) ) {
                        alt127=1;
                    }


                }


                switch (alt127) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3081:10: op= relationalOp sh2= shiftExpression
            	    {
            	    pushFollow(FOLLOW_relationalOp_in_relationalExpression12512);
            	    op=relationalOp();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression12516);
            	    sh2=shiftExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      opcode = (op!=null?op.i:0);
            	                      rhs = sh2;
            	                      lhs = T.at(((AntlrJavacToken) (op!=null?((Token)op.start):null)).getStartIndex()).Binary(opcode, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop127;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 81, relationalExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "relationalExpression"

    public static class relationalOp_return extends ParserRuleReturnScope {
        public int i;
    };

    // $ANTLR start "relationalOp"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3090:1: relationalOp returns [int i] : ( ( '<' '=' )=>t1= '<' t2= '=' | ( '>' '=' )=>t1= '>' t2= '=' | '<' | '>' );
    public final JavaParser.relationalOp_return relationalOp() throws RecognitionException {
        JavaParser.relationalOp_return retval = new JavaParser.relationalOp_return();
        retval.start = input.LT(1);
        int relationalOp_StartIndex = input.index();
        Token t1=null;
        Token t2=null;

        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 82) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3091:5: ( ( '<' '=' )=>t1= '<' t2= '=' | ( '>' '=' )=>t1= '>' t2= '=' | '<' | '>' )
            int alt128=4;
            int LA128_0 = input.LA(1);

            if ( (LA128_0==LT) ) {
                int LA128_1 = input.LA(2);

                if ( (LA128_1==EQ) && (synpred182_Java())) {
                    alt128=1;
                }
                else if ( (LA128_1==IDENTIFIER||LA128_1==BOOLEAN||LA128_1==BYTE||LA128_1==CHAR||LA128_1==DOUBLE||LA128_1==FLOAT||LA128_1==INT||LA128_1==LONG||LA128_1==NEW||LA128_1==SHORT||LA128_1==SUPER||LA128_1==THIS||LA128_1==VOID||(LA128_1>=INTLITERAL && LA128_1<=LPAREN)||(LA128_1>=BANG && LA128_1<=TILDE)||(LA128_1>=PLUSPLUS && LA128_1<=SUB)) ) {
                    alt128=3;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 128, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA128_0==GT) ) {
                int LA128_2 = input.LA(2);

                if ( (LA128_2==EQ) && (synpred183_Java())) {
                    alt128=2;
                }
                else if ( (LA128_2==IDENTIFIER||LA128_2==BOOLEAN||LA128_2==BYTE||LA128_2==CHAR||LA128_2==DOUBLE||LA128_2==FLOAT||LA128_2==INT||LA128_2==LONG||LA128_2==NEW||LA128_2==SHORT||LA128_2==SUPER||LA128_2==THIS||LA128_2==VOID||(LA128_2>=INTLITERAL && LA128_2<=LPAREN)||(LA128_2>=BANG && LA128_2<=TILDE)||(LA128_2>=PLUSPLUS && LA128_2<=SUB)) ) {
                    alt128=4;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 128, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 128, 0, input);

                throw nvae;
            }
            switch (alt128) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3091:9: ( '<' '=' )=>t1= '<' t2= '='
                    {
                    t1=(Token)match(input,LT,FOLLOW_LT_in_relationalOp12573); if (state.failed) return retval;
                    t2=(Token)match(input,EQ,FOLLOW_EQ_in_relationalOp12577); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2) == true) {
                                          retval.i = JCTree.LE;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3099:9: ( '>' '=' )=>t1= '>' t2= '='
                    {
                    t1=(Token)match(input,GT,FOLLOW_GT_in_relationalOp12610); if (state.failed) return retval;
                    t2=(Token)match(input,EQ,FOLLOW_EQ_in_relationalOp12614); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2) == true) {
                                          retval.i = JCTree.GE;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3108:9: '<'
                    {
                    match(input,LT,FOLLOW_LT_in_relationalOp12639); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.LT;
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3112:9: '>'
                    {
                    match(input,GT,FOLLOW_GT_in_relationalOp12663); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.i = JCTree.GT;
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 82, relationalOp_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "relationalOp"


    // $ANTLR start "shiftExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3118:1: shiftExpression returns [JCExpression tree] : ad1= additiveExpression (st= shiftOp ad2= additiveExpression )* ;
    public final JCExpression shiftExpression() throws RecognitionException {
        JCExpression tree = null;
        int shiftExpression_StartIndex = input.index();
        JavaParser.additiveExpression_return ad1 = null;

        JavaParser.shiftOp_return st = null;

        JavaParser.additiveExpression_return ad2 = null;



                    JCExpression lhs = null, rhs = null;
                    com.sun.tools.javac.parser.Token token = null;
                    int opcode = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 83) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3127:5: (ad1= additiveExpression (st= shiftOp ad2= additiveExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3127:9: ad1= additiveExpression (st= shiftOp ad2= additiveExpression )*
            {
            pushFollow(FOLLOW_additiveExpression_in_shiftExpression12728);
            ad1=additiveExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs = (ad1!=null?ad1.tree:null);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3131:9: (st= shiftOp ad2= additiveExpression )*
            loop129:
            do {
                int alt129=2;
                int LA129_0 = input.LA(1);

                if ( (LA129_0==LT) ) {
                    int LA129_1 = input.LA(2);

                    if ( (LA129_1==LT) ) {
                        int LA129_4 = input.LA(3);

                        if ( (LA129_4==IDENTIFIER||LA129_4==BOOLEAN||LA129_4==BYTE||LA129_4==CHAR||LA129_4==DOUBLE||LA129_4==FLOAT||LA129_4==INT||LA129_4==LONG||LA129_4==NEW||LA129_4==SHORT||LA129_4==SUPER||LA129_4==THIS||LA129_4==VOID||(LA129_4>=INTLITERAL && LA129_4<=LPAREN)||(LA129_4>=BANG && LA129_4<=TILDE)||(LA129_4>=PLUSPLUS && LA129_4<=SUB)) ) {
                            alt129=1;
                        }


                    }


                }
                else if ( (LA129_0==GT) ) {
                    int LA129_2 = input.LA(2);

                    if ( (LA129_2==GT) ) {
                        int LA129_5 = input.LA(3);

                        if ( (LA129_5==GT) ) {
                            int LA129_7 = input.LA(4);

                            if ( (LA129_7==IDENTIFIER||LA129_7==BOOLEAN||LA129_7==BYTE||LA129_7==CHAR||LA129_7==DOUBLE||LA129_7==FLOAT||LA129_7==INT||LA129_7==LONG||LA129_7==NEW||LA129_7==SHORT||LA129_7==SUPER||LA129_7==THIS||LA129_7==VOID||(LA129_7>=INTLITERAL && LA129_7<=LPAREN)||(LA129_7>=BANG && LA129_7<=TILDE)||(LA129_7>=PLUSPLUS && LA129_7<=SUB)) ) {
                                alt129=1;
                            }


                        }
                        else if ( (LA129_5==IDENTIFIER||LA129_5==BOOLEAN||LA129_5==BYTE||LA129_5==CHAR||LA129_5==DOUBLE||LA129_5==FLOAT||LA129_5==INT||LA129_5==LONG||LA129_5==NEW||LA129_5==SHORT||LA129_5==SUPER||LA129_5==THIS||LA129_5==VOID||(LA129_5>=INTLITERAL && LA129_5<=LPAREN)||(LA129_5>=BANG && LA129_5<=TILDE)||(LA129_5>=PLUSPLUS && LA129_5<=SUB)) ) {
                            alt129=1;
                        }


                    }


                }


                switch (alt129) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3131:10: st= shiftOp ad2= additiveExpression
            	    {
            	    pushFollow(FOLLOW_shiftOp_in_shiftExpression12755);
            	    st=shiftOp();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression12759);
            	    ad2=additiveExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                      opcode = (st!=null?st.i:0);
            	                      rhs = (ad2!=null?ad2.tree:null);
            	                      lhs = T.at(((AntlrJavacToken) (st!=null?((Token)st.start):null)).getStartIndex()).Binary(opcode, lhs, rhs);
            	                  
            	    }

            	    }
            	    break;

            	default :
            	    break loop129;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 83, shiftExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "shiftExpression"

    public static class shiftOp_return extends ParserRuleReturnScope {
        public int i;
    };

    // $ANTLR start "shiftOp"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3141:1: shiftOp returns [int i] : ( ( '<' '<' )=>t1= '<' t2= '<' | ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' | ( '>' '>' )=>t1= '>' t2= '>' );
    public final JavaParser.shiftOp_return shiftOp() throws RecognitionException {
        JavaParser.shiftOp_return retval = new JavaParser.shiftOp_return();
        retval.start = input.LT(1);
        int shiftOp_StartIndex = input.index();
        Token t1=null;
        Token t2=null;
        Token t3=null;

        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 84) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3142:5: ( ( '<' '<' )=>t1= '<' t2= '<' | ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' | ( '>' '>' )=>t1= '>' t2= '>' )
            int alt130=3;
            alt130 = dfa130.predict(input);
            switch (alt130) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3142:9: ( '<' '<' )=>t1= '<' t2= '<'
                    {
                    t1=(Token)match(input,LT,FOLLOW_LT_in_shiftOp12817); if (state.failed) return retval;
                    t2=(Token)match(input,LT,FOLLOW_LT_in_shiftOp12821); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2) == true) {
                                          retval.i = JCTree.SL;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3150:9: ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>'
                    {
                    t1=(Token)match(input,GT,FOLLOW_GT_in_shiftOp12856); if (state.failed) return retval;
                    t2=(Token)match(input,GT,FOLLOW_GT_in_shiftOp12860); if (state.failed) return retval;
                    t3=(Token)match(input,GT,FOLLOW_GT_in_shiftOp12864); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2, t3) == true) {
                                          retval.i = JCTree.USR;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3158:9: ( '>' '>' )=>t1= '>' t2= '>'
                    {
                    t1=(Token)match(input,GT,FOLLOW_GT_in_shiftOp12897); if (state.failed) return retval;
                    t2=(Token)match(input,GT,FOLLOW_GT_in_shiftOp12901); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (pu.verifyPosition(t1, t2) == true) {
                                          retval.i = JCTree.SR;
                                      } else {
                                          log.error(((AntlrJavacToken)t1).getStartIndex(), "not.stmt");
                                      }
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 84, shiftOp_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "shiftOp"

    public static class additiveExpression_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "additiveExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3169:1: additiveExpression returns [JCExpression tree] : ml1= multiplicativeExpression ( (plu= '+' | min= '-' ) ml2= multiplicativeExpression )* ;
    public final JavaParser.additiveExpression_return additiveExpression() throws RecognitionException {
        JavaParser.additiveExpression_return retval = new JavaParser.additiveExpression_return();
        retval.start = input.LT(1);
        int additiveExpression_StartIndex = input.index();
        Token plu=null;
        Token min=null;
        JCExpression ml1 = null;

        JCExpression ml2 = null;



                    StringBuffer buf = new StringBuffer();
                    JCExpression lhs=null, rhs=null;
                    boolean folding = true;
                    int opcode = 0;
                    int count = 1;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 85) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3186:5: (ml1= multiplicativeExpression ( (plu= '+' | min= '-' ) ml2= multiplicativeExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3186:9: ml1= multiplicativeExpression ( (plu= '+' | min= '-' ) ml2= multiplicativeExpression )*
            {
            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression12967);
            ml1=multiplicativeExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                               lhs = ml1;
                               if (lhs.getKind() != com.sun.source.tree.Tree.Kind.STRING_LITERAL) {
                                   folding = false; buf = null;
                               } else {
                                   buf.append(((JCLiteral)lhs).value.toString());
                               }
                           
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3195:9: ( (plu= '+' | min= '-' ) ml2= multiplicativeExpression )*
            loop132:
            do {
                int alt132=2;
                int LA132_0 = input.LA(1);

                if ( ((LA132_0>=PLUS && LA132_0<=SUB)) ) {
                    alt132=1;
                }


                switch (alt132) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3196:13: (plu= '+' | min= '-' ) ml2= multiplicativeExpression
            	    {
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3196:13: (plu= '+' | min= '-' )
            	    int alt131=2;
            	    int LA131_0 = input.LA(1);

            	    if ( (LA131_0==PLUS) ) {
            	        alt131=1;
            	    }
            	    else if ( (LA131_0==SUB) ) {
            	        alt131=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 131, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt131) {
            	        case 1 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3196:17: plu= '+'
            	            {
            	            plu=(Token)match(input,PLUS,FOLLOW_PLUS_in_additiveExpression13015); if (state.failed) return retval;
            	            if ( state.backtracking==0 ) {

            	                                      opcode = JCTree.PLUS;
            	                                      pos = ((AntlrJavacToken) plu).getStartIndex();
            	                                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3201:17: min= '-'
            	            {
            	            min=(Token)match(input,SUB,FOLLOW_SUB_in_additiveExpression13057); if (state.failed) return retval;
            	            if ( state.backtracking==0 ) {

            	                                      opcode = JCTree.MINUS;
            	                                      pos = ((AntlrJavacToken) min).getStartIndex();
            	                                  
            	            }

            	            }
            	            break;

            	    }

            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression13109);
            	    ml2=multiplicativeExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {

            	                          rhs = ml2;
            	                          lhs = T.at(pos).Binary(opcode, lhs, rhs);
            	                          if (folding == true && opcode == JCTree.PLUS && rhs.getKind() == com.sun.source.tree.Tree.Kind.STRING_LITERAL) {
            	                              buf.append(((JCLiteral)rhs).value.toString());
            	                          } else {
            	                              folding = false;
            	                              buf = null;
            	                          }
            	                          count++;
            	                      
            	    }

            	    }
            	    break;

            	default :
            	    break loop132;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          if (folding == false || count == 1) {
                              retval.tree = lhs;
                          } else {
                              retval.tree = T.at(pos).Literal(TypeTags.CLASS, buf.toString());
                              pu.storeEnd(retval.tree, ((Token)retval.stop));
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 85, additiveExpression_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "additiveExpression"


    // $ANTLR start "multiplicativeExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3222:1: multiplicativeExpression returns [JCExpression tree] : un1= unaryExpression ( (opr1= '*' | opr2= '/' | opr3= '%' ) un2= unaryExpression )* ;
    public final JCExpression multiplicativeExpression() throws RecognitionException {
        JCExpression tree = null;
        int multiplicativeExpression_StartIndex = input.index();
        Token opr1=null;
        Token opr2=null;
        Token opr3=null;
        JavaParser.unaryExpression_return un1 = null;

        JavaParser.unaryExpression_return un2 = null;



                    JCExpression lhs=null, rhs=null;
                    int opcode = 0;
                    int pos = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 86) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3231:5: (un1= unaryExpression ( (opr1= '*' | opr2= '/' | opr3= '%' ) un2= unaryExpression )* )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3232:9: un1= unaryExpression ( (opr1= '*' | opr2= '/' | opr3= '%' ) un2= unaryExpression )*
            {
            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression13196);
            un1=unaryExpression();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              lhs = (un1!=null?un1.tree:null);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3236:9: ( (opr1= '*' | opr2= '/' | opr3= '%' ) un2= unaryExpression )*
            loop134:
            do {
                int alt134=2;
                int LA134_0 = input.LA(1);

                if ( ((LA134_0>=STAR && LA134_0<=SLASH)||LA134_0==PERCENT) ) {
                    alt134=1;
                }


                switch (alt134) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3237:13: (opr1= '*' | opr2= '/' | opr3= '%' ) un2= unaryExpression
            	    {
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3237:13: (opr1= '*' | opr2= '/' | opr3= '%' )
            	    int alt133=3;
            	    switch ( input.LA(1) ) {
            	    case STAR:
            	        {
            	        alt133=1;
            	        }
            	        break;
            	    case SLASH:
            	        {
            	        alt133=2;
            	        }
            	        break;
            	    case PERCENT:
            	        {
            	        alt133=3;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return tree;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 133, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt133) {
            	        case 1 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3237:17: opr1= '*'
            	            {
            	            opr1=(Token)match(input,STAR,FOLLOW_STAR_in_multiplicativeExpression13243); if (state.failed) return tree;
            	            if ( state.backtracking==0 ) {

            	                                      opcode = JCTree.MUL;
            	                                      pos = ((AntlrJavacToken) opr1).getStartIndex();
            	                                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3242:17: opr2= '/'
            	            {
            	            opr2=(Token)match(input,SLASH,FOLLOW_SLASH_in_multiplicativeExpression13285); if (state.failed) return tree;
            	            if ( state.backtracking==0 ) {

            	                                      opcode = JCTree.DIV;
            	                                      pos = ((AntlrJavacToken) opr2).getStartIndex();
            	                                  
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3247:17: opr3= '%'
            	            {
            	            opr3=(Token)match(input,PERCENT,FOLLOW_PERCENT_in_multiplicativeExpression13327); if (state.failed) return tree;
            	            if ( state.backtracking==0 ) {

            	                                      opcode = JCTree.MOD;
            	                                      pos = ((AntlrJavacToken) opr3).getStartIndex();
            	                                  
            	            }

            	            }
            	            break;

            	    }

            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression13379);
            	    un2=unaryExpression();

            	    state._fsp--;
            	    if (state.failed) return tree;
            	    if ( state.backtracking==0 ) {

            	                          rhs = (un2!=null?un2.tree:null);
            	                          lhs = T.at(pos).Binary(opcode, lhs, rhs);
            	                      
            	    }

            	    }
            	    break;

            	default :
            	    break loop134;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {

                          tree = lhs;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 86, multiplicativeExpression_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "multiplicativeExpression"

    public static class unaryExpression_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "unaryExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3261:1: unaryExpression returns [JCExpression tree] : ( '+' un1= unaryExpression | '-' INTLITERAL | '-' LONGLITERAL | '-' un2= unaryExpression | '++' un3= unaryExpression | '--' un4= unaryExpression | unaryExpressionNotPlusMinus );
    public final JavaParser.unaryExpression_return unaryExpression() throws RecognitionException {
        JavaParser.unaryExpression_return retval = new JavaParser.unaryExpression_return();
        retval.start = input.LT(1);
        int unaryExpression_StartIndex = input.index();
        Token INTLITERAL111=null;
        Token LONGLITERAL112=null;
        JavaParser.unaryExpression_return un1 = null;

        JavaParser.unaryExpression_return un2 = null;

        JavaParser.unaryExpression_return un3 = null;

        JavaParser.unaryExpression_return un4 = null;

        JavaParser.unaryExpressionNotPlusMinus_return unaryExpressionNotPlusMinus113 = null;



                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 87) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3269:5: ( '+' un1= unaryExpression | '-' INTLITERAL | '-' LONGLITERAL | '-' un2= unaryExpression | '++' un3= unaryExpression | '--' un4= unaryExpression | unaryExpressionNotPlusMinus )
            int alt135=7;
            alt135 = dfa135.predict(input);
            switch (alt135) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3269:9: '+' un1= unaryExpression
                    {
                    match(input,PLUS,FOLLOW_PLUS_in_unaryExpression13446); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression13451);
                    un1=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Unary(JCTree.POS, (un1!=null?un1.tree:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3273:9: '-' INTLITERAL
                    {
                    match(input,SUB,FOLLOW_SUB_in_unaryExpression13475); if (state.failed) return retval;
                    INTLITERAL111=(Token)match(input,INTLITERAL,FOLLOW_INTLITERAL_in_unaryExpression13477); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = pu.parseMinusInt(INTLITERAL111, pos);
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3277:9: '-' LONGLITERAL
                    {
                    match(input,SUB,FOLLOW_SUB_in_unaryExpression13501); if (state.failed) return retval;
                    LONGLITERAL112=(Token)match(input,LONGLITERAL,FOLLOW_LONGLITERAL_in_unaryExpression13503); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = pu.parseMinusInt(LONGLITERAL112, pos);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3281:9: '-' un2= unaryExpression
                    {
                    match(input,SUB,FOLLOW_SUB_in_unaryExpression13527); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression13531);
                    un2=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Unary(JCTree.NEG, (un2!=null?un2.tree:null));
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3285:9: '++' un3= unaryExpression
                    {
                    match(input,PLUSPLUS,FOLLOW_PLUSPLUS_in_unaryExpression13555); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression13559);
                    un3=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Unary(JCTree.PREINC, (un3!=null?un3.tree:null));
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3289:9: '--' un4= unaryExpression
                    {
                    match(input,SUBSUB,FOLLOW_SUBSUB_in_unaryExpression13583); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression13587);
                    un4=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Unary(JCTree.PREDEC, (un4!=null?un4.tree:null));
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3293:9: unaryExpressionNotPlusMinus
                    {
                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression13611);
                    unaryExpressionNotPlusMinus113=unaryExpressionNotPlusMinus();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree =(unaryExpressionNotPlusMinus113!=null?unaryExpressionNotPlusMinus113.tree:null);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 87, unaryExpression_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "unaryExpression"

    public static class unaryExpressionNotPlusMinus_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "unaryExpressionNotPlusMinus"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3299:1: unaryExpressionNotPlusMinus returns [JCExpression tree] : ( '~' un1= unaryExpression | '!' un2= unaryExpression | ca= castExpression | pr= primary (se= selector[expr] )* (pp= '++' | mm= '--' )? );
    public final JavaParser.unaryExpressionNotPlusMinus_return unaryExpressionNotPlusMinus() throws RecognitionException {
        JavaParser.unaryExpressionNotPlusMinus_return retval = new JavaParser.unaryExpressionNotPlusMinus_return();
        retval.start = input.LT(1);
        int unaryExpressionNotPlusMinus_StartIndex = input.index();
        Token pp=null;
        Token mm=null;
        JavaParser.unaryExpression_return un1 = null;

        JavaParser.unaryExpression_return un2 = null;

        JavaParser.castExpression_return ca = null;

        JavaParser.primary_return pr = null;

        JavaParser.selector_return se = null;



                    JCExpression expr = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 88) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3307:5: ( '~' un1= unaryExpression | '!' un2= unaryExpression | ca= castExpression | pr= primary (se= selector[expr] )* (pp= '++' | mm= '--' )? )
            int alt138=4;
            alt138 = dfa138.predict(input);
            switch (alt138) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3307:9: '~' un1= unaryExpression
                    {
                    match(input,TILDE,FOLLOW_TILDE_in_unaryExpressionNotPlusMinus13674); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus13678);
                    un1=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Unary(JCTree.COMPL, (un1!=null?un1.tree:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3311:9: '!' un2= unaryExpression
                    {
                    match(input,BANG,FOLLOW_BANG_in_unaryExpressionNotPlusMinus13702); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus13706);
                    un2=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Unary(JCTree.NOT, (un2!=null?un2.tree:null));
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3315:9: ca= castExpression
                    {
                    pushFollow(FOLLOW_castExpression_in_unaryExpressionNotPlusMinus13732);
                    ca=castExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=(ca!=null?ca.tree:null);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3319:9: pr= primary (se= selector[expr] )* (pp= '++' | mm= '--' )?
                    {
                    pushFollow(FOLLOW_primary_in_unaryExpressionNotPlusMinus13758);
                    pr=primary();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=(pr!=null?pr.tree:null);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3323:9: (se= selector[expr] )*
                    loop136:
                    do {
                        int alt136=2;
                        int LA136_0 = input.LA(1);

                        if ( (LA136_0==LBRACKET||LA136_0==DOT) ) {
                            alt136=1;
                        }


                        switch (alt136) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3323:10: se= selector[expr]
                    	    {
                    	    pushFollow(FOLLOW_selector_in_unaryExpressionNotPlusMinus13785);
                    	    se=selector(expr);

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      expr=(se!=null?se.tree:null);
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop136;
                        }
                    } while (true);

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3328:9: (pp= '++' | mm= '--' )?
                    int alt137=3;
                    int LA137_0 = input.LA(1);

                    if ( (LA137_0==PLUSPLUS) ) {
                        alt137=1;
                    }
                    else if ( (LA137_0==SUBSUB) ) {
                        alt137=2;
                    }
                    switch (alt137) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3328:13: pp= '++'
                            {
                            pp=(Token)match(input,PLUSPLUS,FOLLOW_PLUSPLUS_in_unaryExpressionNotPlusMinus13827); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  expr = T.at(((AntlrJavacToken) pp).getStartIndex()).Unary(JCTree.POSTINC,expr);
                                                  pu.storeEnd(expr, pp);
                                              
                            }

                            }
                            break;
                        case 2 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3333:13: mm= '--'
                            {
                            mm=(Token)match(input,SUBSUB,FOLLOW_SUBSUB_in_unaryExpressionNotPlusMinus13861); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                                  expr = T.at(((AntlrJavacToken) mm).getStartIndex()).Unary(JCTree.POSTDEC,expr);
                                                  pu.storeEnd(expr, mm);
                                              
                            }

                            }
                            break;

                    }


                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = expr;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 88, unaryExpressionNotPlusMinus_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "unaryExpressionNotPlusMinus"

    public static class castExpression_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "castExpression"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3341:1: castExpression returns [JCExpression tree] : ( '(' primitiveType ')' unaryExpression | '(' type ')' unaryExpressionNotPlusMinus );
    public final JavaParser.castExpression_return castExpression() throws RecognitionException {
        JavaParser.castExpression_return retval = new JavaParser.castExpression_return();
        retval.start = input.LT(1);
        int castExpression_StartIndex = input.index();
        JavaParser.primitiveType_return primitiveType114 = null;

        JavaParser.unaryExpression_return unaryExpression115 = null;

        JCExpression type116 = null;

        JavaParser.unaryExpressionNotPlusMinus_return unaryExpressionNotPlusMinus117 = null;



                    JCExpression clazz = null, expr=null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 89) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3349:5: ( '(' primitiveType ')' unaryExpression | '(' type ')' unaryExpressionNotPlusMinus )
            int alt139=2;
            int LA139_0 = input.LA(1);

            if ( (LA139_0==LPAREN) ) {
                int LA139_1 = input.LA(2);

                if ( (synpred206_Java()) ) {
                    alt139=1;
                }
                else if ( (true) ) {
                    alt139=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 139, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 139, 0, input);

                throw nvae;
            }
            switch (alt139) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3349:9: '(' primitiveType ')' unaryExpression
                    {
                    match(input,LPAREN,FOLLOW_LPAREN_in_castExpression13939); if (state.failed) return retval;
                    pushFollow(FOLLOW_primitiveType_in_castExpression13941);
                    primitiveType114=primitiveType();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,RPAREN,FOLLOW_RPAREN_in_castExpression13943); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpression_in_castExpression13945);
                    unaryExpression115=unaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      clazz=(primitiveType114!=null?primitiveType114.tree:null); expr=(unaryExpression115!=null?unaryExpression115.tree:null);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3353:9: '(' type ')' unaryExpressionNotPlusMinus
                    {
                    match(input,LPAREN,FOLLOW_LPAREN_in_castExpression13969); if (state.failed) return retval;
                    pushFollow(FOLLOW_type_in_castExpression13971);
                    type116=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    match(input,RPAREN,FOLLOW_RPAREN_in_castExpression13973); if (state.failed) return retval;
                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression13975);
                    unaryExpressionNotPlusMinus117=unaryExpressionNotPlusMinus();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      clazz=type116;
                                      expr=(unaryExpressionNotPlusMinus117!=null?unaryExpressionNotPlusMinus117.tree:null);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = T.at(pos).TypeCast(clazz, expr);
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 89, castExpression_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "castExpression"

    protected static class primary_scope {
        JCExpression prim;
    }
    protected Stack primary_stack = new Stack();

    public static class primary_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "primary"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3360:1: primary returns [JCExpression tree] : (par= parExpression | thi1= 'this' (dt1= '.' id1= IDENTIFIER )* (id2= identifierSuffix )? | id5= IDENTIFIER (dt2= '.' id6= IDENTIFIER )* (id7= identifierSuffix )? | sup1= 'super' su= superSuffix[expr] | li= literal | cr= creator | pr= primitiveType (lbr= '[' rbr= ']' )* dt3= '.' cla= 'class' | vod= 'void' dt4= '.' cla2= 'class' );
    public final JavaParser.primary_return primary() throws RecognitionException {
        primary_stack.push(new primary_scope());
        JavaParser.primary_return retval = new JavaParser.primary_return();
        retval.start = input.LT(1);
        int primary_StartIndex = input.index();
        Token thi1=null;
        Token dt1=null;
        Token id1=null;
        Token id5=null;
        Token dt2=null;
        Token id6=null;
        Token sup1=null;
        Token lbr=null;
        Token rbr=null;
        Token dt3=null;
        Token cla=null;
        Token vod=null;
        Token dt4=null;
        Token cla2=null;
        JCExpression par = null;

        JavaParser.identifierSuffix_return id2 = null;

        JavaParser.identifierSuffix_return id7 = null;

        JavaParser.superSuffix_return su = null;

        JavaParser.literal_return li = null;

        JavaParser.creator_return cr = null;

        JavaParser.primitiveType_return pr = null;



                    JCExpression expr = null;
                    ArrayList<Integer> poss = null;
                    ArrayList<Integer> eposs = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 90) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3377:5: (par= parExpression | thi1= 'this' (dt1= '.' id1= IDENTIFIER )* (id2= identifierSuffix )? | id5= IDENTIFIER (dt2= '.' id6= IDENTIFIER )* (id7= identifierSuffix )? | sup1= 'super' su= superSuffix[expr] | li= literal | cr= creator | pr= primitiveType (lbr= '[' rbr= ']' )* dt3= '.' cla= 'class' | vod= 'void' dt4= '.' cla2= 'class' )
            int alt145=8;
            switch ( input.LA(1) ) {
            case LPAREN:
                {
                alt145=1;
                }
                break;
            case THIS:
                {
                alt145=2;
                }
                break;
            case IDENTIFIER:
                {
                alt145=3;
                }
                break;
            case SUPER:
                {
                alt145=4;
                }
                break;
            case INTLITERAL:
            case LONGLITERAL:
            case FLOATLITERAL:
            case DOUBLELITERAL:
            case CHARLITERAL:
            case STRINGLITERAL:
            case TRUE:
            case FALSE:
            case NULL:
                {
                alt145=5;
                }
                break;
            case NEW:
                {
                alt145=6;
                }
                break;
            case BOOLEAN:
            case BYTE:
            case CHAR:
            case DOUBLE:
            case FLOAT:
            case INT:
            case LONG:
            case SHORT:
                {
                alt145=7;
                }
                break;
            case VOID:
                {
                alt145=8;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 145, 0, input);

                throw nvae;
            }

            switch (alt145) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3377:9: par= parExpression
                    {
                    pushFollow(FOLLOW_parExpression_in_primary14054);
                    par=parExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                      expr = par; 
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3378:9: thi1= 'this' (dt1= '.' id1= IDENTIFIER )* (id2= identifierSuffix )?
                    {
                    thi1=(Token)match(input,THIS,FOLLOW_THIS_in_primary14079); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Ident(names._this);
                                      pu.storeEnd(expr, thi1);
                                      ((primary_scope)primary_stack.peek()).prim = expr;
                                      // check "this.class
                                      if (input.LA(2) == CLASS && input.LA(1) == DOT) {
                                          log.error(pos, "expected", "identifier");
                                      }
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3388:9: (dt1= '.' id1= IDENTIFIER )*
                    loop140:
                    do {
                        int alt140=2;
                        int LA140_0 = input.LA(1);

                        if ( (LA140_0==DOT) ) {
                            int LA140_2 = input.LA(2);

                            if ( (LA140_2==IDENTIFIER) ) {
                                int LA140_3 = input.LA(3);

                                if ( (synpred208_Java()) ) {
                                    alt140=1;
                                }


                            }


                        }


                        switch (alt140) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3388:10: dt1= '.' id1= IDENTIFIER
                    	    {
                    	    dt1=(Token)match(input,DOT,FOLLOW_DOT_in_primary14106); if (state.failed) return retval;
                    	    id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primary14110); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      expr = T.at(((AntlrJavacToken) dt1).getStartIndex()).Select(expr, ((AntlrJavacToken)id1).name);
                    	                      pu.storeEnd(expr, id1);
                    	                      ((primary_scope)primary_stack.peek()).prim = expr;
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop140;
                        }
                    } while (true);

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3395:9: (id2= identifierSuffix )?
                    int alt141=2;
                    alt141 = dfa141.predict(input);
                    switch (alt141) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3395:10: id2= identifierSuffix
                            {
                            pushFollow(FOLLOW_identifierSuffix_in_primary14148);
                            id2=identifierSuffix();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              expr = (id2!=null?id2.tree:null);
                                          
                            }

                            }
                            break;

                    }


                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3400:9: id5= IDENTIFIER (dt2= '.' id6= IDENTIFIER )* (id7= identifierSuffix )?
                    {
                    id5=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primary14185); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Ident(((AntlrJavacToken) id5).name);
                                      pu.storeEnd(expr, id5);
                                      ((primary_scope)primary_stack.peek()).prim = expr;
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3406:9: (dt2= '.' id6= IDENTIFIER )*
                    loop142:
                    do {
                        int alt142=2;
                        int LA142_0 = input.LA(1);

                        if ( (LA142_0==DOT) ) {
                            int LA142_2 = input.LA(2);

                            if ( (LA142_2==IDENTIFIER) ) {
                                int LA142_3 = input.LA(3);

                                if ( (synpred211_Java()) ) {
                                    alt142=1;
                                }


                            }


                        }


                        switch (alt142) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3406:10: dt2= '.' id6= IDENTIFIER
                    	    {
                    	    dt2=(Token)match(input,DOT,FOLLOW_DOT_in_primary14212); if (state.failed) return retval;
                    	    id6=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primary14216); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      expr = T.at(((AntlrJavacToken) dt2).getStartIndex()).Select(expr, ((AntlrJavacToken)id6).name);
                    	                      pu.storeEnd(expr, id6);
                    	                      ((primary_scope)primary_stack.peek()).prim =expr;
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop142;
                        }
                    } while (true);

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3413:9: (id7= identifierSuffix )?
                    int alt143=2;
                    alt143 = dfa143.predict(input);
                    switch (alt143) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3413:10: id7= identifierSuffix
                            {
                            pushFollow(FOLLOW_identifierSuffix_in_primary14254);
                            id7=identifierSuffix();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              expr=(id7!=null?id7.tree:null);
                                          
                            }

                            }
                            break;

                    }


                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3418:9: sup1= 'super' su= superSuffix[expr]
                    {
                    sup1=(Token)match(input,SUPER,FOLLOW_SUPER_in_primary14291); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Ident(names._super);
                                  
                    }
                    pushFollow(FOLLOW_superSuffix_in_primary14317);
                    su=superSuffix(expr);

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=(su!=null?su.tree:null);
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3426:9: li= literal
                    {
                    pushFollow(FOLLOW_literal_in_primary14344);
                    li=literal();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=(li!=null?li.tree:null);
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3430:9: cr= creator
                    {
                    pushFollow(FOLLOW_creator_in_primary14370);
                    cr=creator();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=(cr!=null?cr.tree:null);
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3434:9: pr= primitiveType (lbr= '[' rbr= ']' )* dt3= '.' cla= 'class'
                    {
                    pushFollow(FOLLOW_primitiveType_in_primary14396);
                    pr=primitiveType();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=(pr!=null?pr.tree:null);
                                      poss=new ArrayList<Integer>();
                                      eposs=new ArrayList<Integer>();
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3440:9: (lbr= '[' rbr= ']' )*
                    loop144:
                    do {
                        int alt144=2;
                        int LA144_0 = input.LA(1);

                        if ( (LA144_0==LBRACKET) ) {
                            alt144=1;
                        }


                        switch (alt144) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3440:10: lbr= '[' rbr= ']'
                    	    {
                    	    lbr=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_primary14423); if (state.failed) return retval;
                    	    rbr=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_primary14427); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      poss.add(((AntlrJavacToken) lbr).getStartIndex());
                    	                      eposs.add(((AntlrJavacToken) rbr).getStartIndex());
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop144;
                        }
                    } while (true);

                    if ( state.backtracking==0 ) {

                                  for (ti = poss.size() - 1; ti >= 0; ti--) {
                                      expr = T.at(poss.get(ti)).TypeArray(expr);
                                      pu.storeEnd(expr, eposs.get(eposs.size() - 1) + 1);
                                  }
                              
                    }
                    dt3=(Token)match(input,DOT,FOLLOW_DOT_in_primary14474); if (state.failed) return retval;
                    cla=(Token)match(input,CLASS,FOLLOW_CLASS_in_primary14478); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(((AntlrJavacToken) dt3).getStartIndex()).Select(expr, names._class);
                                      pu.storeEnd(expr, cla);
                                  
                    }

                    }
                    break;
                case 8 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3457:9: vod= 'void' dt4= '.' cla2= 'class'
                    {
                    vod=(Token)match(input,VOID,FOLLOW_VOID_in_primary14504); if (state.failed) return retval;
                    dt4=(Token)match(input,DOT,FOLLOW_DOT_in_primary14508); if (state.failed) return retval;
                    cla2=(Token)match(input,CLASS,FOLLOW_CLASS_in_primary14512); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).TypeIdent(TypeTags.VOID);
                                      pu.storeEnd(expr, vod);
                                      expr = T.at(((AntlrJavacToken) dt4).getStartIndex()).Select(expr, names._class);
                                      pu.storeEnd(expr, cla2);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = expr;

                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 90, primary_StartIndex); }
            primary_stack.pop();
        }
        return retval;
    }
    // $ANTLR end "primary"

    public static class superSuffix_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "superSuffix"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3467:1: superSuffix[JCExpression p] returns [JCExpression tree] : (ag1= arguments | '.' (ty= typeArguments )? IDENTIFIER (ag2= arguments )? );
    public final JavaParser.superSuffix_return superSuffix(JCExpression p) throws RecognitionException {
        JavaParser.superSuffix_return retval = new JavaParser.superSuffix_return();
        retval.start = input.LT(1);
        int superSuffix_StartIndex = input.index();
        Token IDENTIFIER118=null;
        JavaParser.arguments_return ag1 = null;

        JavaParser.typeArguments_return ty = null;

        JavaParser.arguments_return ag2 = null;



                    JCExpression expr = p;
                    com.sun.tools.javac.util.List<JCExpression> typeArgs = com.sun.tools.javac.util.List.nil();
                    com.sun.tools.javac.util.List<JCExpression> args = null;
                    Name name = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                    int pos1 = 0;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 91) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3479:5: (ag1= arguments | '.' (ty= typeArguments )? IDENTIFIER (ag2= arguments )? )
            int alt148=2;
            int LA148_0 = input.LA(1);

            if ( (LA148_0==LPAREN) ) {
                alt148=1;
            }
            else if ( (LA148_0==DOT) ) {
                alt148=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 148, 0, input);

                throw nvae;
            }
            switch (alt148) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3479:9: ag1= arguments
                    {
                    pushFollow(FOLLOW_arguments_in_superSuffix14580);
                    ag1=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Apply(typeArgs, expr, (ag1!=null?ag1.list:null));
                                      pu.storeEnd(expr, (ag1!=null?((Token)ag1.stop):null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3484:9: '.' (ty= typeArguments )? IDENTIFIER (ag2= arguments )?
                    {
                    match(input,DOT,FOLLOW_DOT_in_superSuffix14604); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3484:13: (ty= typeArguments )?
                    int alt146=2;
                    int LA146_0 = input.LA(1);

                    if ( (LA146_0==LT) ) {
                        alt146=1;
                    }
                    switch (alt146) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3484:14: ty= typeArguments
                            {
                            pushFollow(FOLLOW_typeArguments_in_superSuffix14609);
                            ty=typeArguments();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              typeArgs = (ty!=null?ty.list:null);
                                          
                            }

                            }
                            break;

                    }

                    IDENTIFIER118=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_superSuffix14644); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      name  =((AntlrJavacToken) IDENTIFIER118).name;
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3493:9: (ag2= arguments )?
                    int alt147=2;
                    int LA147_0 = input.LA(1);

                    if ( (LA147_0==LPAREN) ) {
                        alt147=1;
                    }
                    switch (alt147) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3493:10: ag2= arguments
                            {
                            pushFollow(FOLLOW_arguments_in_superSuffix14671);
                            ag2=arguments();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              args = (ag2!=null?ag2.list:null);
                                              pos1 = ((AntlrJavacToken) (ag2!=null?((Token)ag2.start):null)).getStartIndex();
                                          
                            }

                            }
                            break;

                    }

                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, name);
                                      pu.storeEnd(expr, IDENTIFIER118);
                                      if (args != null) {
                                          expr = T.at(pos1).Apply(typeArgs, expr, args);
                                          if (input.LA(1) == DOT) {
                                              pu.storeEnd(expr, input.LT(1)); // NOTE, should delete this, jc bug
                                          } else {
                                              pu.storeEnd(expr, (ag2!=null?((Token)ag2.stop):null));
                                          }
                                      }
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = expr;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 91, superSuffix_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "superSuffix"

    public static class identifierSuffix_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "identifierSuffix"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3513:1: identifierSuffix returns [JCExpression tree] : ( (lbr1= '[' rbr1= ']' )+ dt1= '.' cla1= 'class' | (lbr2= '[' exp= expression rbr2= ']' )+ | ag1= arguments | '.' cla2= 'class' | '.' nw= nonWildcardTypeArguments id= IDENTIFIER ags= arguments | '.' thi= 'this' | '.' sup1= 'super' ag2= arguments | in= innerCreator[expr] );
    public final JavaParser.identifierSuffix_return identifierSuffix() throws RecognitionException {
        JavaParser.identifierSuffix_return retval = new JavaParser.identifierSuffix_return();
        retval.start = input.LT(1);
        int identifierSuffix_StartIndex = input.index();
        Token lbr1=null;
        Token rbr1=null;
        Token dt1=null;
        Token cla1=null;
        Token lbr2=null;
        Token rbr2=null;
        Token cla2=null;
        Token id=null;
        Token thi=null;
        Token sup1=null;
        JavaParser.expression_return exp = null;

        JavaParser.arguments_return ag1 = null;

        JavaParser.nonWildcardTypeArguments_return nw = null;

        JavaParser.arguments_return ags = null;

        JavaParser.arguments_return ag2 = null;

        JCExpression in = null;



                    JCExpression expr = ((primary_scope)primary_stack.peek()).prim;
                    ArrayList<Integer> poss = null;
                    ArrayList<Integer> eposs = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 92) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3523:5: ( (lbr1= '[' rbr1= ']' )+ dt1= '.' cla1= 'class' | (lbr2= '[' exp= expression rbr2= ']' )+ | ag1= arguments | '.' cla2= 'class' | '.' nw= nonWildcardTypeArguments id= IDENTIFIER ags= arguments | '.' thi= 'this' | '.' sup1= 'super' ag2= arguments | in= innerCreator[expr] )
            int alt151=8;
            alt151 = dfa151.predict(input);
            switch (alt151) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3523:9: (lbr1= '[' rbr1= ']' )+ dt1= '.' cla1= 'class'
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3523:9: (lbr1= '[' rbr1= ']' )+
                    int cnt149=0;
                    loop149:
                    do {
                        int alt149=2;
                        int LA149_0 = input.LA(1);

                        if ( (LA149_0==LBRACKET) ) {
                            alt149=1;
                        }


                        switch (alt149) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3523:13: lbr1= '[' rbr1= ']'
                    	    {
                    	    lbr1=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_identifierSuffix14765); if (state.failed) return retval;
                    	    rbr1=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_identifierSuffix14769); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                          if (poss == null) {
                    	                              poss = new ArrayList<Integer>();
                    	                              eposs = new ArrayList<Integer>();
                    	                          }
                    	                          poss.add(((AntlrJavacToken) lbr1).getStartIndex());
                    	                          eposs.add(((AntlrJavacToken) rbr1).getStartIndex());
                    	                      
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt149 >= 1 ) break loop149;
                    	    if (state.backtracking>0) {state.failed=true; return retval;}
                                EarlyExitException eee =
                                    new EarlyExitException(149, input);
                                throw eee;
                        }
                        cnt149++;
                    } while (true);

                    dt1=(Token)match(input,DOT,FOLLOW_DOT_in_identifierSuffix14810); if (state.failed) return retval;
                    cla1=(Token)match(input,CLASS,FOLLOW_CLASS_in_identifierSuffix14814); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      for (ti = poss.size() - 1; ti >= 0; ti--) {
                                          expr = T.at(poss.get(ti)).TypeArray(expr);
                                          pu.storeEnd(expr, eposs.get(eposs.size() - 1) + 1);
                                      }
                                      expr = T.at(((AntlrJavacToken) dt1).getStartIndex()).Select(expr, names._class);
                                      pu.storeEnd(expr, cla1);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3542:9: (lbr2= '[' exp= expression rbr2= ']' )+
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3542:9: (lbr2= '[' exp= expression rbr2= ']' )+
                    int cnt150=0;
                    loop150:
                    do {
                        int alt150=2;
                        alt150 = dfa150.predict(input);
                        switch (alt150) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3542:10: lbr2= '[' exp= expression rbr2= ']'
                    	    {
                    	    lbr2=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_identifierSuffix14841); if (state.failed) return retval;
                    	    pushFollow(FOLLOW_expression_in_identifierSuffix14845);
                    	    exp=expression();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    rbr2=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_identifierSuffix14849); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      expr = T.at(((AntlrJavacToken) lbr2).getStartIndex()).Indexed(expr, (exp!=null?exp.tree:null));
                    	                      pu.storeEnd(expr, rbr2);
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt150 >= 1 ) break loop150;
                    	    if (state.backtracking>0) {state.failed=true; return retval;}
                                EarlyExitException eee =
                                    new EarlyExitException(150, input);
                                throw eee;
                        }
                        cnt150++;
                    } while (true);


                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3548:9: ag1= arguments
                    {
                    pushFollow(FOLLOW_arguments_in_identifierSuffix14886);
                    ag1=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      com.sun.tools.javac.util.List<JCExpression> typeArgs = com.sun.tools.javac.util.List.nil();
                                      com.sun.tools.javac.util.List<JCExpression> args = (ag1!=null?ag1.list:null);
                                      expr = T.at(pos).Apply(typeArgs, expr, args);
                                      pu.storeEnd(expr, (ag1!=null?((Token)ag1.stop):null));
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3555:9: '.' cla2= 'class'
                    {
                    match(input,DOT,FOLLOW_DOT_in_identifierSuffix14910); if (state.failed) return retval;
                    cla2=(Token)match(input,CLASS,FOLLOW_CLASS_in_identifierSuffix14914); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, names._class);
                                      pu.storeEnd(expr, cla2);
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3560:9: '.' nw= nonWildcardTypeArguments id= IDENTIFIER ags= arguments
                    {
                    match(input,DOT,FOLLOW_DOT_in_identifierSuffix14938); if (state.failed) return retval;
                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_identifierSuffix14942);
                    nw=nonWildcardTypeArguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    id=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_identifierSuffix14946); if (state.failed) return retval;
                    pushFollow(FOLLOW_arguments_in_identifierSuffix14950);
                    ags=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, ((AntlrJavacToken) id).name);
                                      pu.storeEnd(expr, id);
                                      com.sun.tools.javac.util.List<JCExpression> typeArgs = (nw!=null?nw.list:null);
                                      com.sun.tools.javac.util.List<JCExpression> args = (ags!=null?ags.list:null);
                                      expr = T.at(((AntlrJavacToken) (ags!=null?((Token)ags.start):null)).getStartIndex()).Apply(typeArgs, expr, args);
                                      pu.storeEnd(expr, (ags!=null?((Token)ags.stop):null));
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3569:9: '.' thi= 'this'
                    {
                    match(input,DOT,FOLLOW_DOT_in_identifierSuffix14974); if (state.failed) return retval;
                    thi=(Token)match(input,THIS,FOLLOW_THIS_in_identifierSuffix14978); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, names._this);
                                      pu.storeEnd(expr, thi);
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3574:9: '.' sup1= 'super' ag2= arguments
                    {
                    match(input,DOT,FOLLOW_DOT_in_identifierSuffix15002); if (state.failed) return retval;
                    sup1=(Token)match(input,SUPER,FOLLOW_SUPER_in_identifierSuffix15006); if (state.failed) return retval;
                    pushFollow(FOLLOW_arguments_in_identifierSuffix15010);
                    ag2=arguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, names._super);
                                      pu.storeEnd(expr, sup1);
                                      com.sun.tools.javac.util.List<JCExpression> typeArgs = com.sun.tools.javac.util.List.nil();
                                      com.sun.tools.javac.util.List<JCExpression> args = (ag2!=null?ag2.list:null);
                                      expr = T.at(((AntlrJavacToken) (ag2!=null?((Token)ag2.start):null)).getStartIndex()).Apply(typeArgs, expr, args);
                                      pu.storeEnd(expr, (ag2!=null?((Token)ag2.stop):null));
                                  
                    }

                    }
                    break;
                case 8 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3583:9: in= innerCreator[expr]
                    {
                    pushFollow(FOLLOW_innerCreator_in_identifierSuffix15036);
                    in=innerCreator(expr);

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = in;
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = expr;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 92, identifierSuffix_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "identifierSuffix"

    public static class selector_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "selector"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3589:1: selector[JCExpression p] returns [JCExpression tree] : ( '.' IDENTIFIER ( arguments )? | '.' thi= 'this' | '.' sup1= 'super' su= superSuffix[expr] | innerCreator[expr] | '[' expression rb= ']' );
    public final JavaParser.selector_return selector(JCExpression p) throws RecognitionException {
        JavaParser.selector_return retval = new JavaParser.selector_return();
        retval.start = input.LT(1);
        int selector_StartIndex = input.index();
        Token thi=null;
        Token sup1=null;
        Token rb=null;
        Token IDENTIFIER119=null;
        JavaParser.superSuffix_return su = null;

        JavaParser.arguments_return arguments120 = null;

        JCExpression innerCreator121 = null;

        JavaParser.expression_return expression122 = null;



                    JCExpression expr=p;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 93) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3597:5: ( '.' IDENTIFIER ( arguments )? | '.' thi= 'this' | '.' sup1= 'super' su= superSuffix[expr] | innerCreator[expr] | '[' expression rb= ']' )
            int alt153=5;
            int LA153_0 = input.LA(1);

            if ( (LA153_0==DOT) ) {
                switch ( input.LA(2) ) {
                case IDENTIFIER:
                    {
                    alt153=1;
                    }
                    break;
                case THIS:
                    {
                    alt153=2;
                    }
                    break;
                case SUPER:
                    {
                    alt153=3;
                    }
                    break;
                case NEW:
                    {
                    alt153=4;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 153, 1, input);

                    throw nvae;
                }

            }
            else if ( (LA153_0==LBRACKET) ) {
                alt153=5;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 153, 0, input);

                throw nvae;
            }
            switch (alt153) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3597:9: '.' IDENTIFIER ( arguments )?
                    {
                    match(input,DOT,FOLLOW_DOT_in_selector15102); if (state.failed) return retval;
                    IDENTIFIER119=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_selector15104); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, ((AntlrJavacToken) IDENTIFIER119).name);
                                      pu.storeEnd(expr, IDENTIFIER119);
                                  
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3602:9: ( arguments )?
                    int alt152=2;
                    int LA152_0 = input.LA(1);

                    if ( (LA152_0==LPAREN) ) {
                        alt152=1;
                    }
                    switch (alt152) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3602:10: arguments
                            {
                            pushFollow(FOLLOW_arguments_in_selector15129);
                            arguments120=arguments();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) {

                                              com.sun.tools.javac.util.List<JCExpression> typeArgs = com.sun.tools.javac.util.List.nil();
                                              com.sun.tools.javac.util.List<JCExpression> args = (arguments120!=null?arguments120.list:null);
                                              expr = T.at(((AntlrJavacToken) (arguments120!=null?((Token)arguments120.start):null)).getStartIndex()).Apply(typeArgs, expr, args);
                                              pu.storeEnd(expr, (arguments120!=null?((Token)arguments120.stop):null));
                                           
                            }

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3610:9: '.' thi= 'this'
                    {
                    match(input,DOT,FOLLOW_DOT_in_selector15165); if (state.failed) return retval;
                    thi=(Token)match(input,THIS,FOLLOW_THIS_in_selector15169); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, names._this);
                                      pu.storeEnd(expr, thi);
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3615:9: '.' sup1= 'super' su= superSuffix[expr]
                    {
                    match(input,DOT,FOLLOW_DOT_in_selector15193); if (state.failed) return retval;
                    sup1=(Token)match(input,SUPER,FOLLOW_SUPER_in_selector15197); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Select(expr, names._super);
                                      pu.storeEnd(expr, sup1);
                                  
                    }
                    pushFollow(FOLLOW_superSuffix_in_selector15223);
                    su=superSuffix(expr);

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = (su!=null?su.tree:null);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3624:9: innerCreator[expr]
                    {
                    pushFollow(FOLLOW_innerCreator_in_selector15248);
                    innerCreator121=innerCreator(expr);

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = innerCreator121;
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3628:9: '[' expression rb= ']'
                    {
                    match(input,LBRACKET,FOLLOW_LBRACKET_in_selector15273); if (state.failed) return retval;
                    pushFollow(FOLLOW_expression_in_selector15275);
                    expression122=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    rb=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_selector15279); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = T.at(pos).Indexed(expr, (expression122!=null?expression122.tree:null));
                                      pu.storeEnd(expr, rb);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = expr;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 93, selector_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "selector"

    public static class creator_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "creator"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3635:1: creator returns [JCExpression tree] : ( 'new' nonWildcardTypeArguments cr1= classOrInterfaceType cl1= classCreatorRest | 'new' cr2= classOrInterfaceType cl2= classCreatorRest | 'new' '{' typebody= anonymousTypeBody b2= '}' | arrayCreator );
    public final JavaParser.creator_return creator() throws RecognitionException {
        JavaParser.creator_return retval = new JavaParser.creator_return();
        retval.start = input.LT(1);
        int creator_StartIndex = input.index();
        Token b2=null;
        JCExpression cr1 = null;

        JavaParser.classCreatorRest_return cl1 = null;

        JCExpression cr2 = null;

        JavaParser.classCreatorRest_return cl2 = null;

        JavaParser.anonymousTypeBody_return typebody = null;

        JavaParser.nonWildcardTypeArguments_return nonWildcardTypeArguments123 = null;

        JavaParser.arrayCreator_return arrayCreator124 = null;



                        JCExpression expr = null;
                        JCExpression encl=null;
                        com.sun.tools.javac.util.List<JCExpression> typeArgs = com.sun.tools.javac.util.List.nil();
                        JCExpression createdName = null;;
                        com.sun.tools.javac.util.List<JCExpression> args = com.sun.tools.javac.util.List.nil();
                        JCClassDecl body = null;
                        int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 94) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3645:5: ( 'new' nonWildcardTypeArguments cr1= classOrInterfaceType cl1= classCreatorRest | 'new' cr2= classOrInterfaceType cl2= classCreatorRest | 'new' '{' typebody= anonymousTypeBody b2= '}' | arrayCreator )
            int alt154=4;
            int LA154_0 = input.LA(1);

            if ( (LA154_0==NEW) ) {
                int LA154_1 = input.LA(2);

                if ( (synpred236_Java()) ) {
                    alt154=1;
                }
                else if ( (synpred237_Java()) ) {
                    alt154=2;
                }
                else if ( (synpred238_Java()) ) {
                    alt154=3;
                }
                else if ( (true) ) {
                    alt154=4;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 154, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 154, 0, input);

                throw nvae;
            }
            switch (alt154) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3645:9: 'new' nonWildcardTypeArguments cr1= classOrInterfaceType cl1= classCreatorRest
                    {
                    match(input,NEW,FOLLOW_NEW_in_creator15329); if (state.failed) return retval;
                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_creator15331);
                    nonWildcardTypeArguments123=nonWildcardTypeArguments();

                    state._fsp--;
                    if (state.failed) return retval;
                    pushFollow(FOLLOW_classOrInterfaceType_in_creator15335);
                    cr1=classOrInterfaceType();

                    state._fsp--;
                    if (state.failed) return retval;
                    pushFollow(FOLLOW_classCreatorRest_in_creator15339);
                    cl1=classCreatorRest();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      typeArgs = (nonWildcardTypeArguments123!=null?nonWildcardTypeArguments123.list:null);
                                      createdName = cr1;
                                      args = (cl1!=null?cl1.list:null);
                                      body = (cl1!=null?cl1.tree:null);
                                      retval.tree = T.at(pos).NewClass(null, typeArgs, createdName, args, body);
                                      pu.storeEnd(retval.tree, (cl1!=null?((Token)cl1.stop):null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3654:9: 'new' cr2= classOrInterfaceType cl2= classCreatorRest
                    {
                    match(input,NEW,FOLLOW_NEW_in_creator15363); if (state.failed) return retval;
                    pushFollow(FOLLOW_classOrInterfaceType_in_creator15367);
                    cr2=classOrInterfaceType();

                    state._fsp--;
                    if (state.failed) return retval;
                    pushFollow(FOLLOW_classCreatorRest_in_creator15371);
                    cl2=classCreatorRest();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      createdName = cr2;
                                      args = (cl2!=null?cl2.list:null);
                                      body = (cl2!=null?cl2.tree:null);
                                      retval.tree = T.at(pos).NewClass(null, typeArgs, createdName, args, body);
                                      pu.storeEnd(retval.tree, (cl2!=null?((Token)cl2.stop):null));
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3663:7: 'new' '{' typebody= anonymousTypeBody b2= '}'
                    {
                    match(input,NEW,FOLLOW_NEW_in_creator15398); if (state.failed) return retval;
                    match(input,LBRACE,FOLLOW_LBRACE_in_creator15400); if (state.failed) return retval;
                    pushFollow(FOLLOW_anonymousTypeBody_in_creator15404);
                    typebody=anonymousTypeBody();

                    state._fsp--;
                    if (state.failed) return retval;
                    b2=(Token)match(input,RBRACE,FOLLOW_RBRACE_in_creator15408); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                      		    	createdName = T.at(pos).Ident(names.fromString("Object"));
                      		    	retval.tree = T.at(pos).NewClass(null, typeArgs, createdName, args, (typebody!=null?typebody.tree:null));
                      		    	pu.storeEnd(retval.tree, b2);
                      		    
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3669:9: arrayCreator
                    {
                    pushFollow(FOLLOW_arrayCreator_in_creator15426);
                    arrayCreator124=arrayCreator();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = (arrayCreator124!=null?arrayCreator124.tree:null);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 94, creator_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "creator"

    public static class anonymousTypeBody_return extends ParserRuleReturnScope {
        public JCClassDecl tree;
    };

    // $ANTLR start "anonymousTypeBody"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3675:1: anonymousTypeBody returns [JCClassDecl tree] : (va1= variableDeclarator (cm= ',' va2= variableDeclarator )* )? ;
    public final JavaParser.anonymousTypeBody_return anonymousTypeBody() throws RecognitionException {
        JavaParser.anonymousTypeBody_return retval = new JavaParser.anonymousTypeBody_return();
        retval.start = input.LT(1);
        int anonymousTypeBody_StartIndex = input.index();
        Token cm=null;
        JavaParser.variableDeclarator_return va1 = null;

        JavaParser.variableDeclarator_return va2 = null;



                    ListBuffer<JCTree> defs = new ListBuffer<JCTree>();
                    JCTree ptree = null;
                    String dc = ((AntlrJavacToken) ((Token)retval.start)).docComment;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 95) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3688:5: ( (va1= variableDeclarator (cm= ',' va2= variableDeclarator )* )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3688:7: (va1= variableDeclarator (cm= ',' va2= variableDeclarator )* )?
            {
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3688:7: (va1= variableDeclarator (cm= ',' va2= variableDeclarator )* )?
            int alt156=2;
            int LA156_0 = input.LA(1);

            if ( (LA156_0==IDENTIFIER) ) {
                alt156=1;
            }
            switch (alt156) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3688:8: va1= variableDeclarator (cm= ',' va2= variableDeclarator )*
                    {
                    pushFollow(FOLLOW_variableDeclarator_in_anonymousTypeBody15481);
                    va1=variableDeclarator();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      JCVariableDecl tree = T.at((va1!=null?va1.pos:0)).VarDef(T.at(Position.NOPOS).Modifiers(Flags.PUBLIC | Flags.FINAL), (va1!=null?va1.name:null), null, (va1!=null?va1.tree:null));
                                      pu.attach(tree, dc);
                                      ptree = tree;
                                      defs.append(tree);
                                   
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3695:9: (cm= ',' va2= variableDeclarator )*
                    loop155:
                    do {
                        int alt155=2;
                        int LA155_0 = input.LA(1);

                        if ( (LA155_0==COMMA) ) {
                            alt155=1;
                        }


                        switch (alt155) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3695:10: cm= ',' va2= variableDeclarator
                    	    {
                    	    cm=(Token)match(input,COMMA,FOLLOW_COMMA_in_anonymousTypeBody15508); if (state.failed) return retval;
                    	    pushFollow(FOLLOW_variableDeclarator_in_anonymousTypeBody15512);
                    	    va2=variableDeclarator();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      JCVariableDecl tree = T.at(va2.pos).VarDef(T.at(Position.NOPOS).Modifiers(Flags.PUBLIC | Flags.FINAL), (va2!=null?va2.name:null), null, (va2!=null?va2.tree:null));
                    	                      pu.storeEnd(ptree, cm);
                    	                      ptree = tree;
                    	                      pu.attach(tree, dc);
                    	                      defs.append(tree);
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop155;
                        }
                    } while (true);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

               			JCModifiers mods = T.at(Position.NOPOS).Modifiers(0);
                          retval.tree = T.at(((AntlrJavacToken) ((Token)retval.start)).getStartIndex()).AnonymousClassDef(mods, defs.toList());
                          if (ptree != null) {
                             	pu.storeEnd(ptree, ((Token)retval.stop));
                         	}
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 95, anonymousTypeBody_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "anonymousTypeBody"

    public static class arrayCreator_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "arrayCreator"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3706:1: arrayCreator returns [JCExpression tree] : ( 'new' cr1= createdName '[' ']' (lbr1= '[' rbr1= ']' )* ar= arrayInitializer | 'new' cr2= createdName '[' ex1= expression ']' ( '[' ex2= expression ']' )* (lbr2= '[' rbr2= ']' )* );
    public final JavaParser.arrayCreator_return arrayCreator() throws RecognitionException {
        JavaParser.arrayCreator_return retval = new JavaParser.arrayCreator_return();
        retval.start = input.LT(1);
        int arrayCreator_StartIndex = input.index();
        Token lbr1=null;
        Token rbr1=null;
        Token lbr2=null;
        Token rbr2=null;
        JCExpression cr1 = null;

        JavaParser.arrayInitializer_return ar = null;

        JCExpression cr2 = null;

        JavaParser.expression_return ex1 = null;

        JavaParser.expression_return ex2 = null;



                    ListBuffer<JCExpression> dims = new ListBuffer<JCExpression>();
                    JCExpression expr = null;
                    ArrayList<Integer> poss = null;
                    ArrayList<Integer> eposs = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 96) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3718:5: ( 'new' cr1= createdName '[' ']' (lbr1= '[' rbr1= ']' )* ar= arrayInitializer | 'new' cr2= createdName '[' ex1= expression ']' ( '[' ex2= expression ']' )* (lbr2= '[' rbr2= ']' )* )
            int alt160=2;
            int LA160_0 = input.LA(1);

            if ( (LA160_0==NEW) ) {
                int LA160_1 = input.LA(2);

                if ( (synpred242_Java()) ) {
                    alt160=1;
                }
                else if ( (true) ) {
                    alt160=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 160, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 160, 0, input);

                throw nvae;
            }
            switch (alt160) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3718:9: 'new' cr1= createdName '[' ']' (lbr1= '[' rbr1= ']' )* ar= arrayInitializer
                    {
                    match(input,NEW,FOLLOW_NEW_in_arrayCreator15585); if (state.failed) return retval;
                    pushFollow(FOLLOW_createdName_in_arrayCreator15589);
                    cr1=createdName();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr=cr1;
                                  
                    }
                    match(input,LBRACKET,FOLLOW_LBRACKET_in_arrayCreator15613); if (state.failed) return retval;
                    match(input,RBRACKET,FOLLOW_RBRACKET_in_arrayCreator15615); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3723:9: (lbr1= '[' rbr1= ']' )*
                    loop157:
                    do {
                        int alt157=2;
                        int LA157_0 = input.LA(1);

                        if ( (LA157_0==LBRACKET) ) {
                            alt157=1;
                        }


                        switch (alt157) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3723:10: lbr1= '[' rbr1= ']'
                    	    {
                    	    lbr1=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_arrayCreator15628); if (state.failed) return retval;
                    	    rbr1=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_arrayCreator15632); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      if (poss == null) {
                    	                          poss = new ArrayList<Integer>();
                    	                          eposs = new ArrayList<Integer>();
                    	                      }
                    	                      poss.add(((AntlrJavacToken) lbr1).getStartIndex());
                    	                      eposs.add(((AntlrJavacToken) rbr1).getStartIndex());
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop157;
                        }
                    } while (true);

                    pushFollow(FOLLOW_arrayInitializer_in_arrayCreator15669);
                    ar=arrayInitializer();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      if (poss != null)
                                          for (ti = poss.size() - 1; ti >= 0; ti--) {
                                               expr = T.at(poss.get(ti)).TypeArray(expr);
                                               pu.storeEnd(expr, eposs.get(eposs.size()-1)+1);
                                          }
                                      expr = T.at(pos).NewArray(expr, com.sun.tools.javac.util.List.<JCExpression>nil(), (ar!=null?ar.list:null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3743:9: 'new' cr2= createdName '[' ex1= expression ']' ( '[' ex2= expression ']' )* (lbr2= '[' rbr2= ']' )*
                    {
                    match(input,NEW,FOLLOW_NEW_in_arrayCreator15694); if (state.failed) return retval;
                    pushFollow(FOLLOW_createdName_in_arrayCreator15698);
                    cr2=createdName();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      expr = cr2;
                                  
                    }
                    match(input,LBRACKET,FOLLOW_LBRACKET_in_arrayCreator15722); if (state.failed) return retval;
                    pushFollow(FOLLOW_expression_in_arrayCreator15726);
                    ex1=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      dims.append((ex1!=null?ex1.tree:null));
                                  
                    }
                    match(input,RBRACKET,FOLLOW_RBRACKET_in_arrayCreator15750); if (state.failed) return retval;
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3752:9: ( '[' ex2= expression ']' )*
                    loop158:
                    do {
                        int alt158=2;
                        alt158 = dfa158.predict(input);
                        switch (alt158) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3752:13: '[' ex2= expression ']'
                    	    {
                    	    match(input,LBRACKET,FOLLOW_LBRACKET_in_arrayCreator15764); if (state.failed) return retval;
                    	    pushFollow(FOLLOW_expression_in_arrayCreator15768);
                    	    ex2=expression();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                          dims.append((ex2!=null?ex2.tree:null));
                    	                      
                    	    }
                    	    match(input,RBRACKET,FOLLOW_RBRACKET_in_arrayCreator15800); if (state.failed) return retval;

                    	    }
                    	    break;

                    	default :
                    	    break loop158;
                        }
                    } while (true);

                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3758:9: (lbr2= '[' rbr2= ']' )*
                    loop159:
                    do {
                        int alt159=2;
                        int LA159_0 = input.LA(1);

                        if ( (LA159_0==LBRACKET) ) {
                            int LA159_2 = input.LA(2);

                            if ( (LA159_2==RBRACKET) ) {
                                alt159=1;
                            }


                        }


                        switch (alt159) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3758:10: lbr2= '[' rbr2= ']'
                    	    {
                    	    lbr2=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_arrayCreator15824); if (state.failed) return retval;
                    	    rbr2=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_arrayCreator15828); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                      if (poss == null) {
                    	                          poss = new ArrayList<Integer>();
                    	                          eposs = new ArrayList<Integer>();
                    	                      }
                    	                      poss.add(((AntlrJavacToken) lbr2).getStartIndex());
                    	                      eposs.add(((AntlrJavacToken) rbr2).getStartIndex());
                    	                  
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop159;
                        }
                    } while (true);

                    if ( state.backtracking==0 ) {

                                      if (poss != null)
                                          for (ti = poss.size() - 1; ti >= 0; ti--) {
                                              expr = T.at(poss.get(ti)).TypeArray(expr);
                                              pu.storeEnd(expr, eposs.get(eposs.size() - 1) + 1);
                                          }
                                          expr = T.at(pos).NewArray(expr, dims.toList(), null);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.tree = expr;
                          pu.storeEnd(retval.tree, ((Token)retval.stop));
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 96, arrayCreator_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "arrayCreator"


    // $ANTLR start "variableInitializer"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3778:1: variableInitializer returns [JCExpression tree] : ( arrayInitializer | expression );
    public final JCExpression variableInitializer() throws RecognitionException {
        JCExpression tree = null;
        int variableInitializer_StartIndex = input.index();
        JavaParser.arrayInitializer_return arrayInitializer125 = null;

        JavaParser.expression_return expression126 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 97) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3779:5: ( arrayInitializer | expression )
            int alt161=2;
            int LA161_0 = input.LA(1);

            if ( (LA161_0==LBRACE) ) {
                alt161=1;
            }
            else if ( (LA161_0==IDENTIFIER||LA161_0==BOOLEAN||LA161_0==BYTE||LA161_0==CHAR||LA161_0==DOUBLE||LA161_0==FLOAT||LA161_0==INT||LA161_0==LONG||LA161_0==NEW||LA161_0==SHORT||LA161_0==SUPER||LA161_0==THIS||LA161_0==VOID||(LA161_0>=INTLITERAL && LA161_0<=LPAREN)||(LA161_0>=BANG && LA161_0<=TILDE)||(LA161_0>=PLUSPLUS && LA161_0<=SUB)) ) {
                alt161=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return tree;}
                NoViableAltException nvae =
                    new NoViableAltException("", 161, 0, input);

                throw nvae;
            }
            switch (alt161) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3779:9: arrayInitializer
                    {
                    pushFollow(FOLLOW_arrayInitializer_in_variableInitializer15890);
                    arrayInitializer125=arrayInitializer();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree = T.at(((AntlrJavacToken) (arrayInitializer125!=null?((Token)arrayInitializer125.start):null)).getStartIndex()).NewArray(null, com.sun.tools.javac.util.List.<JCExpression>nil(), (arrayInitializer125!=null?arrayInitializer125.list:null));
                                      pu.storeEnd(tree, (arrayInitializer125!=null?((Token)arrayInitializer125.stop):null));
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3784:9: expression
                    {
                    pushFollow(FOLLOW_expression_in_variableInitializer15914);
                    expression126=expression();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =(expression126!=null?expression126.tree:null);
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 97, variableInitializer_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "variableInitializer"

    public static class arrayInitializer_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCExpression> list;
    };

    // $ANTLR start "arrayInitializer"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3790:1: arrayInitializer returns [com.sun.tools.javac.util.List<JCExpression> list] : '{' (va1= variableInitializer ( ',' va2= variableInitializer )* )? ( ',' )? '}' ;
    public final JavaParser.arrayInitializer_return arrayInitializer() throws RecognitionException {
        JavaParser.arrayInitializer_return retval = new JavaParser.arrayInitializer_return();
        retval.start = input.LT(1);
        int arrayInitializer_StartIndex = input.index();
        JCExpression va1 = null;

        JCExpression va2 = null;



                    ListBuffer<JCExpression> buf = new ListBuffer<JCExpression>();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 98) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3797:5: ( '{' (va1= variableInitializer ( ',' va2= variableInitializer )* )? ( ',' )? '}' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3797:9: '{' (va1= variableInitializer ( ',' va2= variableInitializer )* )? ( ',' )? '}'
            {
            match(input,LBRACE,FOLLOW_LBRACE_in_arrayInitializer15977); if (state.failed) return retval;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3798:13: (va1= variableInitializer ( ',' va2= variableInitializer )* )?
            int alt163=2;
            int LA163_0 = input.LA(1);

            if ( (LA163_0==IDENTIFIER||LA163_0==BOOLEAN||LA163_0==BYTE||LA163_0==CHAR||LA163_0==DOUBLE||LA163_0==FLOAT||LA163_0==INT||LA163_0==LONG||LA163_0==NEW||LA163_0==SHORT||LA163_0==SUPER||LA163_0==THIS||LA163_0==VOID||(LA163_0>=INTLITERAL && LA163_0<=LPAREN)||LA163_0==LBRACE||(LA163_0>=BANG && LA163_0<=TILDE)||(LA163_0>=PLUSPLUS && LA163_0<=SUB)) ) {
                alt163=1;
            }
            switch (alt163) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3798:14: va1= variableInitializer ( ',' va2= variableInitializer )*
                    {
                    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer15995);
                    va1=variableInitializer();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                          buf.append(va1);
                                      
                    }
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3802:17: ( ',' va2= variableInitializer )*
                    loop162:
                    do {
                        int alt162=2;
                        int LA162_0 = input.LA(1);

                        if ( (LA162_0==COMMA) ) {
                            int LA162_1 = input.LA(2);

                            if ( (LA162_1==IDENTIFIER||LA162_1==BOOLEAN||LA162_1==BYTE||LA162_1==CHAR||LA162_1==DOUBLE||LA162_1==FLOAT||LA162_1==INT||LA162_1==LONG||LA162_1==NEW||LA162_1==SHORT||LA162_1==SUPER||LA162_1==THIS||LA162_1==VOID||(LA162_1>=INTLITERAL && LA162_1<=LPAREN)||LA162_1==LBRACE||(LA162_1>=BANG && LA162_1<=TILDE)||(LA162_1>=PLUSPLUS && LA162_1<=SUB)) ) {
                                alt162=1;
                            }


                        }


                        switch (alt162) {
                    	case 1 :
                    	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3802:18: ',' va2= variableInitializer
                    	    {
                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayInitializer16032); if (state.failed) return retval;
                    	    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer16036);
                    	    va2=variableInitializer();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {

                    	                              buf.append(va2);
                    	                          
                    	    }

                    	    }
                    	    break;

                    	default :
                    	    break loop162;
                        }
                    } while (true);


                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3808:13: ( ',' )?
            int alt164=2;
            int LA164_0 = input.LA(1);

            if ( (LA164_0==COMMA) ) {
                alt164=1;
            }
            switch (alt164) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3808:14: ','
                    {
                    match(input,COMMA,FOLLOW_COMMA_in_arrayInitializer16108); if (state.failed) return retval;

                    }
                    break;

            }

            match(input,RBRACE,FOLLOW_RBRACE_in_arrayInitializer16121); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          retval.list = buf.toList();
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 98, arrayInitializer_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "arrayInitializer"


    // $ANTLR start "createdName"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3813:1: createdName returns [JCExpression tree] : ( classOrInterfaceType | primitiveType );
    public final JCExpression createdName() throws RecognitionException {
        JCExpression tree = null;
        int createdName_StartIndex = input.index();
        JCExpression classOrInterfaceType127 = null;

        JavaParser.primitiveType_return primitiveType128 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 99) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3814:5: ( classOrInterfaceType | primitiveType )
            int alt165=2;
            int LA165_0 = input.LA(1);

            if ( (LA165_0==IDENTIFIER) ) {
                alt165=1;
            }
            else if ( (LA165_0==BOOLEAN||LA165_0==BYTE||LA165_0==CHAR||LA165_0==DOUBLE||LA165_0==FLOAT||LA165_0==INT||LA165_0==LONG||LA165_0==SHORT) ) {
                alt165=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return tree;}
                NoViableAltException nvae =
                    new NoViableAltException("", 165, 0, input);

                throw nvae;
            }
            switch (alt165) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3814:9: classOrInterfaceType
                    {
                    pushFollow(FOLLOW_classOrInterfaceType_in_createdName16158);
                    classOrInterfaceType127=classOrInterfaceType();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =classOrInterfaceType127;
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3818:9: primitiveType
                    {
                    pushFollow(FOLLOW_primitiveType_in_createdName16182);
                    primitiveType128=primitiveType();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      tree =(primitiveType128!=null?primitiveType128.tree:null);
                                  
                    }

                    }
                    break;

            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 99, createdName_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "createdName"


    // $ANTLR start "innerCreator"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3824:1: innerCreator[JCExpression p] returns [JCExpression tree] : '.' nl= 'new' ( nonWildcardTypeArguments )? IDENTIFIER ( typeArguments )? classCreatorRest ;
    public final JCExpression innerCreator(JCExpression p) throws RecognitionException {
        JCExpression tree = null;
        int innerCreator_StartIndex = input.index();
        Token nl=null;
        Token IDENTIFIER130=null;
        JavaParser.nonWildcardTypeArguments_return nonWildcardTypeArguments129 = null;

        JavaParser.typeArguments_return typeArguments131 = null;

        JavaParser.classCreatorRest_return classCreatorRest132 = null;



                    JCExpression expr = p;
                    com.sun.tools.javac.util.List<JCExpression> typeArgs = null; // if no args, list is null
                    JCExpression createdName = null;
                    com.sun.tools.javac.util.List<JCExpression> args = null;

                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 100) ) { return tree; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3835:5: ( '.' nl= 'new' ( nonWildcardTypeArguments )? IDENTIFIER ( typeArguments )? classCreatorRest )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3835:9: '.' nl= 'new' ( nonWildcardTypeArguments )? IDENTIFIER ( typeArguments )? classCreatorRest
            {
            match(input,DOT,FOLLOW_DOT_in_innerCreator16247); if (state.failed) return tree;
            nl=(Token)match(input,NEW,FOLLOW_NEW_in_innerCreator16251); if (state.failed) return tree;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3836:9: ( nonWildcardTypeArguments )?
            int alt166=2;
            int LA166_0 = input.LA(1);

            if ( (LA166_0==LT) ) {
                alt166=1;
            }
            switch (alt166) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3836:10: nonWildcardTypeArguments
                    {
                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_innerCreator16262);
                    nonWildcardTypeArguments129=nonWildcardTypeArguments();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      typeArgs = (nonWildcardTypeArguments129!=null?nonWildcardTypeArguments129.list:null);
                                  
                    }

                    }
                    break;

            }

            IDENTIFIER130=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_innerCreator16297); if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              createdName = T.at(((AntlrJavacToken) IDENTIFIER130).getStartIndex()).Ident(((AntlrJavacToken) IDENTIFIER130).name);
                              pu.storeEnd(createdName, IDENTIFIER130);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3846:9: ( typeArguments )?
            int alt167=2;
            int LA167_0 = input.LA(1);

            if ( (LA167_0==LT) ) {
                alt167=1;
            }
            switch (alt167) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3846:10: typeArguments
                    {
                    pushFollow(FOLLOW_typeArguments_in_innerCreator16322);
                    typeArguments131=typeArguments();

                    state._fsp--;
                    if (state.failed) return tree;
                    if ( state.backtracking==0 ) {

                                      createdName = T.at(((AntlrJavacToken) IDENTIFIER130).getStartIndex()).TypeApply(createdName, (typeArguments131!=null?typeArguments131.list:null));
                                      pu.storeEnd(createdName, (typeArguments131!=null?((Token)typeArguments131.stop):null));
                                  
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_classCreatorRest_in_innerCreator16357);
            classCreatorRest132=classCreatorRest();

            state._fsp--;
            if (state.failed) return tree;
            if ( state.backtracking==0 ) {

                              expr = T.at(((AntlrJavacToken) nl).getStartIndex()).NewClass(expr, typeArgs, createdName, (classCreatorRest132!=null?classCreatorRest132.list:null), (classCreatorRest132!=null?classCreatorRest132.tree:null));
                              pu.storeEnd(expr, (classCreatorRest132!=null?((Token)classCreatorRest132.stop):null));
                          
            }

            }

            if ( state.backtracking==0 ) {

                          tree = expr;
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 100, innerCreator_StartIndex); }
        }
        return tree;
    }
    // $ANTLR end "innerCreator"

    public static class classCreatorRest_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCExpression> list;
        public JCClassDecl tree;
    };

    // $ANTLR start "classCreatorRest"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3860:1: classCreatorRest returns [com.sun.tools.javac.util.List<JCExpression> list, JCClassDecl tree] : arguments ( classBody )? ;
    public final JavaParser.classCreatorRest_return classCreatorRest() throws RecognitionException {
        JavaParser.classCreatorRest_return retval = new JavaParser.classCreatorRest_return();
        retval.start = input.LT(1);
        int classCreatorRest_StartIndex = input.index();
        JavaParser.arguments_return arguments133 = null;

        JavaParser.classBody_return classBody134 = null;



                    retval.tree = null;
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 101) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3864:5: ( arguments ( classBody )? )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3864:9: arguments ( classBody )?
            {
            pushFollow(FOLLOW_arguments_in_classCreatorRest16408);
            arguments133=arguments();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              retval.list =(arguments133!=null?arguments133.list:null);
                          
            }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3868:9: ( classBody )?
            int alt168=2;
            int LA168_0 = input.LA(1);

            if ( (LA168_0==LBRACE) ) {
                alt168=1;
            }
            switch (alt168) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3868:10: classBody
                    {
                    pushFollow(FOLLOW_classBody_in_classCreatorRest16433);
                    classBody134=classBody();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      JCModifiers mods = T.at(Position.NOPOS).Modifiers(0);
                                      retval.tree = T.at(((AntlrJavacToken) (classBody134!=null?((Token)classBody134.start):null)).getStartIndex()).AnonymousClassDef(mods, (classBody134!=null?classBody134.list:null));
                                      pu.storeEnd(retval.tree, (classBody134!=null?((Token)classBody134.stop):null));
                                  
                    }

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 101, classCreatorRest_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "classCreatorRest"

    public static class nonWildcardTypeArguments_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCExpression> list;
    };

    // $ANTLR start "nonWildcardTypeArguments"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3878:1: nonWildcardTypeArguments returns [com.sun.tools.javac.util.List<JCExpression> list] : lb= '<' typeList '>' ;
    public final JavaParser.nonWildcardTypeArguments_return nonWildcardTypeArguments() throws RecognitionException {
        JavaParser.nonWildcardTypeArguments_return retval = new JavaParser.nonWildcardTypeArguments_return();
        retval.start = input.LT(1);
        int nonWildcardTypeArguments_StartIndex = input.index();
        Token lb=null;
        com.sun.tools.javac.util.List<JCExpression> typeList135 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 102) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3879:5: (lb= '<' typeList '>' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3879:9: lb= '<' typeList '>'
            {
            lb=(Token)match(input,LT,FOLLOW_LT_in_nonWildcardTypeArguments16484); if (state.failed) return retval;
            pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments16486);
            typeList135=typeList();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {

                              retval.list =typeList135;
                              checkGeneric(lb);
                          
            }
            match(input,GT,FOLLOW_GT_in_nonWildcardTypeArguments16510); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 102, nonWildcardTypeArguments_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "nonWildcardTypeArguments"

    public static class arguments_return extends ParserRuleReturnScope {
        public com.sun.tools.javac.util.List<JCExpression> list;
    };

    // $ANTLR start "arguments"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3887:1: arguments returns [com.sun.tools.javac.util.List<JCExpression> list] : '(' (ex= expressionList )? ')' ;
    public final JavaParser.arguments_return arguments() throws RecognitionException {
        JavaParser.arguments_return retval = new JavaParser.arguments_return();
        retval.start = input.LT(1);
        int arguments_StartIndex = input.index();
        JavaParser.expressionList_return ex = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 103) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3893:5: ( '(' (ex= expressionList )? ')' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3893:9: '(' (ex= expressionList )? ')'
            {
            match(input,LPAREN,FOLLOW_LPAREN_in_arguments16546); if (state.failed) return retval;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3893:13: (ex= expressionList )?
            int alt169=2;
            int LA169_0 = input.LA(1);

            if ( (LA169_0==IDENTIFIER||LA169_0==BOOLEAN||LA169_0==BYTE||LA169_0==CHAR||LA169_0==DOUBLE||LA169_0==FLOAT||LA169_0==INT||LA169_0==LONG||LA169_0==NEW||LA169_0==SHORT||LA169_0==SUPER||LA169_0==THIS||LA169_0==VOID||(LA169_0>=INTLITERAL && LA169_0<=LPAREN)||(LA169_0>=BANG && LA169_0<=TILDE)||(LA169_0>=PLUSPLUS && LA169_0<=SUB)) ) {
                alt169=1;
            }
            switch (alt169) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3893:14: ex= expressionList
                    {
                    pushFollow(FOLLOW_expressionList_in_arguments16551);
                    ex=expressionList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.list =(ex!=null?ex.list:null);
                                  
                    }

                    }
                    break;

            }

            match(input,RPAREN,FOLLOW_RPAREN_in_arguments16578); if (state.failed) return retval;

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

                          if (retval.list == null) {
                              retval.list = com.sun.tools.javac.util.List.nil();
                          }
                      
            }
        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 103, arguments_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "arguments"

    public static class literal_return extends ParserRuleReturnScope {
        public JCExpression tree;
    };

    // $ANTLR start "literal"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3900:1: literal returns [JCExpression tree] : ( INTLITERAL | LONGLITERAL | FLOATLITERAL | DOUBLELITERAL | CHARLITERAL | STRINGLITERAL | TRUE | FALSE | NULL );
    public final JavaParser.literal_return literal() throws RecognitionException {
        JavaParser.literal_return retval = new JavaParser.literal_return();
        retval.start = input.LT(1);
        int literal_StartIndex = input.index();
        Token INTLITERAL136=null;
        Token LONGLITERAL137=null;
        Token FLOATLITERAL138=null;
        Token DOUBLELITERAL139=null;
        Token CHARLITERAL140=null;
        Token STRINGLITERAL141=null;
        Token TRUE142=null;
        Token FALSE143=null;
        Token NULL144=null;


                    AntlrJavacToken token;
                    String val = null;
                    int pos = ((AntlrJavacToken) ((Token)retval.start)).getStartIndex();
                
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 104) ) { return retval; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3906:5: ( INTLITERAL | LONGLITERAL | FLOATLITERAL | DOUBLELITERAL | CHARLITERAL | STRINGLITERAL | TRUE | FALSE | NULL )
            int alt170=9;
            switch ( input.LA(1) ) {
            case INTLITERAL:
                {
                alt170=1;
                }
                break;
            case LONGLITERAL:
                {
                alt170=2;
                }
                break;
            case FLOATLITERAL:
                {
                alt170=3;
                }
                break;
            case DOUBLELITERAL:
                {
                alt170=4;
                }
                break;
            case CHARLITERAL:
                {
                alt170=5;
                }
                break;
            case STRINGLITERAL:
                {
                alt170=6;
                }
                break;
            case TRUE:
                {
                alt170=7;
                }
                break;
            case FALSE:
                {
                alt170=8;
                }
                break;
            case NULL:
                {
                alt170=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 170, 0, input);

                throw nvae;
            }

            switch (alt170) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3906:9: INTLITERAL
                    {
                    INTLITERAL136=(Token)match(input,INTLITERAL,FOLLOW_INTLITERAL_in_literal16614); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = pu.parseInt(INTLITERAL136);
                                  
                    }

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3910:9: LONGLITERAL
                    {
                    LONGLITERAL137=(Token)match(input,LONGLITERAL,FOLLOW_LONGLITERAL_in_literal16638); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = pu.parseInt(LONGLITERAL137);
                                  
                    }

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3914:9: FLOATLITERAL
                    {
                    FLOATLITERAL138=(Token)match(input,FLOATLITERAL,FOLLOW_FLOATLITERAL_in_literal16662); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = pu.parseFloat(FLOATLITERAL138);
                                  
                    }

                    }
                    break;
                case 4 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3918:9: DOUBLELITERAL
                    {
                    DOUBLELITERAL139=(Token)match(input,DOUBLELITERAL,FOLLOW_DOUBLELITERAL_in_literal16686); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = pu.parseFloat(DOUBLELITERAL139);
                                  
                    }

                    }
                    break;
                case 5 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3922:9: CHARLITERAL
                    {
                    CHARLITERAL140=(Token)match(input,CHARLITERAL,FOLLOW_CHARLITERAL_in_literal16710); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Literal(TypeTags.CHAR, ((AntlrJavacToken) CHARLITERAL140).stringVal.charAt(0) + 0);
                                      pu.storeEnd(retval.tree, CHARLITERAL140);
                                  
                    }

                    }
                    break;
                case 6 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3927:9: STRINGLITERAL
                    {
                    STRINGLITERAL141=(Token)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_literal16734); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Literal(TypeTags.CLASS, ((AntlrJavacToken) STRINGLITERAL141).stringVal);
                                      pu.storeEnd(retval.tree, STRINGLITERAL141);
                                  
                    }

                    }
                    break;
                case 7 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3932:9: TRUE
                    {
                    TRUE142=(Token)match(input,TRUE,FOLLOW_TRUE_in_literal16758); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Literal(TypeTags.BOOLEAN, 1);
                                      pu.storeEnd(retval.tree, TRUE142);
                                  
                    }

                    }
                    break;
                case 8 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3937:9: FALSE
                    {
                    FALSE143=(Token)match(input,FALSE,FOLLOW_FALSE_in_literal16782); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Literal(TypeTags.BOOLEAN, 0);
                                      pu.storeEnd(retval.tree, FALSE143);
                                  
                    }

                    }
                    break;
                case 9 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3942:9: NULL
                    {
                    NULL144=(Token)match(input,NULL,FOLLOW_NULL_in_literal16806); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {

                                      retval.tree = T.at(pos).Literal(TypeTags.BOT, null);
                                      pu.storeEnd(retval.tree, NULL144);
                                  
                    }

                    }
                    break;

            }
            retval.stop = input.LT(-1);

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 104, literal_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end "literal"


    // $ANTLR start "classHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3949:1: classHeader : modifiers 'class' IDENTIFIER ;
    public final void classHeader() throws RecognitionException {
        int classHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 105) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3954:5: ( modifiers 'class' IDENTIFIER )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3954:9: modifiers 'class' IDENTIFIER
            {
            pushFollow(FOLLOW_modifiers_in_classHeader16844);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            match(input,CLASS,FOLLOW_CLASS_in_classHeader16846); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_classHeader16848); if (state.failed) return ;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 105, classHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "classHeader"


    // $ANTLR start "enumHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3957:1: enumHeader : modifiers ( 'enum' | IDENTIFIER ) IDENTIFIER ;
    public final void enumHeader() throws RecognitionException {
        int enumHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 106) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3958:5: ( modifiers ( 'enum' | IDENTIFIER ) IDENTIFIER )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3958:9: modifiers ( 'enum' | IDENTIFIER ) IDENTIFIER
            {
            pushFollow(FOLLOW_modifiers_in_enumHeader16868);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            if ( input.LA(1)==IDENTIFIER||input.LA(1)==ENUM ) {
                input.consume();
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_enumHeader16876); if (state.failed) return ;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 106, enumHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "enumHeader"


    // $ANTLR start "interfaceHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3961:1: interfaceHeader : modifiers 'interface' IDENTIFIER ;
    public final void interfaceHeader() throws RecognitionException {
        int interfaceHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 107) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3962:5: ( modifiers 'interface' IDENTIFIER )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3962:9: modifiers 'interface' IDENTIFIER
            {
            pushFollow(FOLLOW_modifiers_in_interfaceHeader16896);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            match(input,INTERFACE,FOLLOW_INTERFACE_in_interfaceHeader16898); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceHeader16900); if (state.failed) return ;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 107, interfaceHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "interfaceHeader"


    // $ANTLR start "annotationHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3965:1: annotationHeader : modifiers '@' 'interface' IDENTIFIER ;
    public final void annotationHeader() throws RecognitionException {
        int annotationHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 108) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3966:5: ( modifiers '@' 'interface' IDENTIFIER )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3966:9: modifiers '@' 'interface' IDENTIFIER
            {
            pushFollow(FOLLOW_modifiers_in_annotationHeader16920);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            match(input,MONKEYS_AT,FOLLOW_MONKEYS_AT_in_annotationHeader16922); if (state.failed) return ;
            match(input,INTERFACE,FOLLOW_INTERFACE_in_annotationHeader16924); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_annotationHeader16926); if (state.failed) return ;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 108, annotationHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "annotationHeader"


    // $ANTLR start "typeHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3969:1: typeHeader : modifiers ( 'class' | 'enum' | ( ( '@' )? 'interface' ) ) IDENTIFIER ;
    public final void typeHeader() throws RecognitionException {
        int typeHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 109) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:5: ( modifiers ( 'class' | 'enum' | ( ( '@' )? 'interface' ) ) IDENTIFIER )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:9: modifiers ( 'class' | 'enum' | ( ( '@' )? 'interface' ) ) IDENTIFIER
            {
            pushFollow(FOLLOW_modifiers_in_typeHeader16946);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:19: ( 'class' | 'enum' | ( ( '@' )? 'interface' ) )
            int alt172=3;
            switch ( input.LA(1) ) {
            case CLASS:
                {
                alt172=1;
                }
                break;
            case ENUM:
                {
                alt172=2;
                }
                break;
            case INTERFACE:
            case MONKEYS_AT:
                {
                alt172=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 172, 0, input);

                throw nvae;
            }

            switch (alt172) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:20: 'class'
                    {
                    match(input,CLASS,FOLLOW_CLASS_in_typeHeader16949); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:28: 'enum'
                    {
                    match(input,ENUM,FOLLOW_ENUM_in_typeHeader16951); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:35: ( ( '@' )? 'interface' )
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:35: ( ( '@' )? 'interface' )
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:36: ( '@' )? 'interface'
                    {
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3970:36: ( '@' )?
                    int alt171=2;
                    int LA171_0 = input.LA(1);

                    if ( (LA171_0==MONKEYS_AT) ) {
                        alt171=1;
                    }
                    switch (alt171) {
                        case 1 :
                            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:0:0: '@'
                            {
                            match(input,MONKEYS_AT,FOLLOW_MONKEYS_AT_in_typeHeader16954); if (state.failed) return ;

                            }
                            break;

                    }

                    match(input,INTERFACE,FOLLOW_INTERFACE_in_typeHeader16958); if (state.failed) return ;

                    }


                    }
                    break;

            }

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_typeHeader16962); if (state.failed) return ;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 109, typeHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "typeHeader"


    // $ANTLR start "methodHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3973:1: methodHeader : modifiers ( typeParameters )? ( type | 'void' )? IDENTIFIER '(' ;
    public final void methodHeader() throws RecognitionException {
        int methodHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 110) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3974:5: ( modifiers ( typeParameters )? ( type | 'void' )? IDENTIFIER '(' )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3974:9: modifiers ( typeParameters )? ( type | 'void' )? IDENTIFIER '('
            {
            pushFollow(FOLLOW_modifiers_in_methodHeader16982);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3974:19: ( typeParameters )?
            int alt173=2;
            int LA173_0 = input.LA(1);

            if ( (LA173_0==LT) ) {
                alt173=1;
            }
            switch (alt173) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:0:0: typeParameters
                    {
                    pushFollow(FOLLOW_typeParameters_in_methodHeader16984);
                    typeParameters();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;

            }

            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3974:35: ( type | 'void' )?
            int alt174=3;
            switch ( input.LA(1) ) {
                case IDENTIFIER:
                    {
                    int LA174_1 = input.LA(2);

                    if ( (LA174_1==IDENTIFIER||LA174_1==LBRACKET||LA174_1==DOT||LA174_1==LT) ) {
                        alt174=1;
                    }
                    }
                    break;
                case BOOLEAN:
                case BYTE:
                case CHAR:
                case DOUBLE:
                case FLOAT:
                case INT:
                case LONG:
                case SHORT:
                    {
                    alt174=1;
                    }
                    break;
                case VOID:
                    {
                    alt174=2;
                    }
                    break;
            }

            switch (alt174) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3974:36: type
                    {
                    pushFollow(FOLLOW_type_in_methodHeader16988);
                    type();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3974:41: 'void'
                    {
                    match(input,VOID,FOLLOW_VOID_in_methodHeader16990); if (state.failed) return ;

                    }
                    break;

            }

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodHeader16994); if (state.failed) return ;
            match(input,LPAREN,FOLLOW_LPAREN_in_methodHeader16996); if (state.failed) return ;

            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 110, methodHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "methodHeader"


    // $ANTLR start "fieldHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3977:1: fieldHeader : modifiers type IDENTIFIER ( '[' ']' )* ( '=' | ',' | ';' ) ;
    public final void fieldHeader() throws RecognitionException {
        int fieldHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 111) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3978:5: ( modifiers type IDENTIFIER ( '[' ']' )* ( '=' | ',' | ';' ) )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3978:9: modifiers type IDENTIFIER ( '[' ']' )* ( '=' | ',' | ';' )
            {
            pushFollow(FOLLOW_modifiers_in_fieldHeader17016);
            modifiers();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FOLLOW_type_in_fieldHeader17018);
            type();

            state._fsp--;
            if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_fieldHeader17020); if (state.failed) return ;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3978:35: ( '[' ']' )*
            loop175:
            do {
                int alt175=2;
                int LA175_0 = input.LA(1);

                if ( (LA175_0==LBRACKET) ) {
                    alt175=1;
                }


                switch (alt175) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3978:36: '[' ']'
            	    {
            	    match(input,LBRACKET,FOLLOW_LBRACKET_in_fieldHeader17023); if (state.failed) return ;
            	    match(input,RBRACKET,FOLLOW_RBRACKET_in_fieldHeader17024); if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop175;
                }
            } while (true);

            if ( (input.LA(1)>=SEMI && input.LA(1)<=COMMA)||input.LA(1)==EQ ) {
                input.consume();
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 111, fieldHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "fieldHeader"


    // $ANTLR start "localVariableHeader"
    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3981:1: localVariableHeader : variableModifiers ( type | VAR ) IDENTIFIER ( '[' ']' )* ( '=' | ',' | ';' ) ;
    public final void localVariableHeader() throws RecognitionException {
        int localVariableHeader_StartIndex = input.index();
        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 112) ) { return ; }
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:5: ( variableModifiers ( type | VAR ) IDENTIFIER ( '[' ']' )* ( '=' | ',' | ';' ) )
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:9: variableModifiers ( type | VAR ) IDENTIFIER ( '[' ']' )* ( '=' | ',' | ';' )
            {
            pushFollow(FOLLOW_variableModifiers_in_localVariableHeader17054);
            variableModifiers();

            state._fsp--;
            if (state.failed) return ;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:27: ( type | VAR )
            int alt176=2;
            int LA176_0 = input.LA(1);

            if ( (LA176_0==IDENTIFIER||LA176_0==BOOLEAN||LA176_0==BYTE||LA176_0==CHAR||LA176_0==DOUBLE||LA176_0==FLOAT||LA176_0==INT||LA176_0==LONG||LA176_0==SHORT) ) {
                alt176=1;
            }
            else if ( (LA176_0==VAR) ) {
                alt176=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 176, 0, input);

                throw nvae;
            }
            switch (alt176) {
                case 1 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:28: type
                    {
                    pushFollow(FOLLOW_type_in_localVariableHeader17057);
                    type();

                    state._fsp--;
                    if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:33: VAR
                    {
                    match(input,VAR,FOLLOW_VAR_in_localVariableHeader17059); if (state.failed) return ;

                    }
                    break;

            }

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_localVariableHeader17062); if (state.failed) return ;
            // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:49: ( '[' ']' )*
            loop177:
            do {
                int alt177=2;
                int LA177_0 = input.LA(1);

                if ( (LA177_0==LBRACKET) ) {
                    alt177=1;
                }


                switch (alt177) {
            	case 1 :
            	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3982:50: '[' ']'
            	    {
            	    match(input,LBRACKET,FOLLOW_LBRACKET_in_localVariableHeader17065); if (state.failed) return ;
            	    match(input,RBRACKET,FOLLOW_RBRACKET_in_localVariableHeader17066); if (state.failed) return ;

            	    }
            	    break;

            	default :
            	    break loop177;
                }
            } while (true);

            if ( (input.LA(1)>=SEMI && input.LA(1)<=COMMA)||input.LA(1)==EQ ) {
                input.consume();
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }

            catch (RecognitionException e) {
                if(e.token!=null && e.token instanceof AntlrJavacToken){
                    log.error(((AntlrJavacToken)e.token).getStartIndex(), "not.stmt");
                }
                else{
                    //TODO: Error reporting
                    log.error(((CommonToken)e.token).getStartIndex(), "not.stmt");  
                }
                
                input.consume();
                if(debug){
                    e.printStackTrace();
                }    
            }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 112, localVariableHeader_StartIndex); }
        }
        return ;
    }
    // $ANTLR end "localVariableHeader"

    // $ANTLR start synpred2_Java
    public final void synpred2_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:13: ( ( annotations )? packageDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:13: ( annotations )? packageDeclaration
        {
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:13: ( annotations )?
        int alt178=2;
        int LA178_0 = input.LA(1);

        if ( (LA178_0==MONKEYS_AT) ) {
            alt178=1;
        }
        switch (alt178) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:609:14: annotations
                {
                pushFollow(FOLLOW_annotations_in_synpred2_Java163);
                annotations();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }

        pushFollow(FOLLOW_packageDeclaration_in_synpred2_Java210);
        packageDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred2_Java

    // $ANTLR start synpred12_Java
    public final void synpred12_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:10: ( classHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:10: classHeader
        {
        pushFollow(FOLLOW_classHeader_in_synpred12_Java844);
        classHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred12_Java

    // $ANTLR start synpred13_Java
    public final void synpred13_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:9: ( classHeader | enumHeader )
        int alt180=2;
        alt180 = dfa180.predict(input);
        switch (alt180) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:10: classHeader
                {
                pushFollow(FOLLOW_classHeader_in_synpred13_Java844);
                classHeader();

                state._fsp--;
                if (state.failed) return ;

                }
                break;
            case 2 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:724:24: enumHeader
                {
                pushFollow(FOLLOW_enumHeader_in_synpred13_Java848);
                enumHeader();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }}
    // $ANTLR end synpred13_Java

    // $ANTLR start synpred16_Java
    public final void synpred16_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:904:9: ( modifiers 'class' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:904:10: modifiers 'class'
        {
        pushFollow(FOLLOW_modifiers_in_synpred16_Java1417);
        modifiers();

        state._fsp--;
        if (state.failed) return ;
        match(input,CLASS,FOLLOW_CLASS_in_synpred16_Java1419); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred16_Java

    // $ANTLR start synpred33_Java
    public final void synpred33_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1190:9: ( interfaceHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1190:10: interfaceHeader
        {
        pushFollow(FOLLOW_interfaceHeader_in_synpred33_Java2788);
        interfaceHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred33_Java

    // $ANTLR start synpred34_Java
    public final void synpred34_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1194:9: ( annotationHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1194:10: annotationHeader
        {
        pushFollow(FOLLOW_annotationHeader_in_synpred34_Java2816);
        annotationHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred34_Java

    // $ANTLR start synpred43_Java
    public final void synpred43_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1320:9: ( fieldHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1320:10: fieldHeader
        {
        pushFollow(FOLLOW_fieldHeader_in_synpred43_Java3493);
        fieldHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred43_Java

    // $ANTLR start synpred44_Java
    public final void synpred44_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1324:9: ( methodHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1324:10: methodHeader
        {
        pushFollow(FOLLOW_methodHeader_in_synpred44_Java3524);
        methodHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred44_Java

    // $ANTLR start synpred45_Java
    public final void synpred45_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1328:10: ( classHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1328:10: classHeader
        {
        pushFollow(FOLLOW_classHeader_in_synpred45_Java3554);
        classHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred45_Java

    // $ANTLR start synpred46_Java
    public final void synpred46_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1328:9: ( classHeader | enumHeader )
        int alt181=2;
        alt181 = dfa181.predict(input);
        switch (alt181) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1328:10: classHeader
                {
                pushFollow(FOLLOW_classHeader_in_synpred46_Java3554);
                classHeader();

                state._fsp--;
                if (state.failed) return ;

                }
                break;
            case 2 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1328:24: enumHeader
                {
                pushFollow(FOLLOW_enumHeader_in_synpred46_Java3558);
                enumHeader();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }}
    // $ANTLR end synpred46_Java

    // $ANTLR start synpred47_Java
    public final void synpred47_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1332:10: ( interfaceHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1332:10: interfaceHeader
        {
        pushFollow(FOLLOW_interfaceHeader_in_synpred47_Java3588);
        interfaceHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred47_Java

    // $ANTLR start synpred48_Java
    public final void synpred48_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1332:9: ( interfaceHeader | annotationHeader )
        int alt182=2;
        alt182 = dfa182.predict(input);
        switch (alt182) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1332:10: interfaceHeader
                {
                pushFollow(FOLLOW_interfaceHeader_in_synpred48_Java3588);
                interfaceHeader();

                state._fsp--;
                if (state.failed) return ;

                }
                break;
            case 2 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1332:28: annotationHeader
                {
                pushFollow(FOLLOW_annotationHeader_in_synpred48_Java3592);
                annotationHeader();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }}
    // $ANTLR end synpred48_Java

    // $ANTLR start synpred50_Java
    public final void synpred50_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1365:9: ( modifiers ( typeParameters )? IDENTIFIER '(' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1365:10: modifiers ( typeParameters )? IDENTIFIER '('
        {
        pushFollow(FOLLOW_modifiers_in_synpred50_Java3686);
        modifiers();

        state._fsp--;
        if (state.failed) return ;
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1365:20: ( typeParameters )?
        int alt183=2;
        int LA183_0 = input.LA(1);

        if ( (LA183_0==LT) ) {
            alt183=1;
        }
        switch (alt183) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:0:0: typeParameters
                {
                pushFollow(FOLLOW_typeParameters_in_synpred50_Java3688);
                typeParameters();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }

        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred50_Java3691); if (state.failed) return ;
        match(input,LPAREN,FOLLOW_LPAREN_in_synpred50_Java3693); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred50_Java

    // $ANTLR start synpred53_Java
    public final void synpred53_Java_fragment() throws RecognitionException {   
        JavaParser.explicitConstructorInvocation_return ex1 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1398:10: (ex1= explicitConstructorInvocation )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1398:10: ex1= explicitConstructorInvocation
        {
        pushFollow(FOLLOW_explicitConstructorInvocation_in_synpred53_Java3883);
        ex1=explicitConstructorInvocation();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred53_Java

    // $ANTLR start synpred63_Java
    public final void synpred63_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1550:9: ( interfaceFieldDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1550:9: interfaceFieldDeclaration
        {
        pushFollow(FOLLOW_interfaceFieldDeclaration_in_synpred63_Java4708);
        interfaceFieldDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred63_Java

    // $ANTLR start synpred64_Java
    public final void synpred64_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1554:9: ( interfaceMethodDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1554:9: interfaceMethodDeclaration
        {
        pushFollow(FOLLOW_interfaceMethodDeclaration_in_synpred64_Java4732);
        interfaceMethodDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred64_Java

    // $ANTLR start synpred65_Java
    public final void synpred65_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1558:9: ( interfaceDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1558:9: interfaceDeclaration
        {
        pushFollow(FOLLOW_interfaceDeclaration_in_synpred65_Java4756);
        interfaceDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred65_Java

    // $ANTLR start synpred66_Java
    public final void synpred66_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1562:9: ( classDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1562:9: classDeclaration
        {
        pushFollow(FOLLOW_classDeclaration_in_synpred66_Java4780);
        classDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred66_Java

    // $ANTLR start synpred91_Java
    public final void synpred91_Java_fragment() throws RecognitionException {   
        JavaParser.ellipsisParameterDecl_return el1 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1890:9: (el1= ellipsisParameterDecl )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1890:9: el1= ellipsisParameterDecl
        {
        pushFollow(FOLLOW_ellipsisParameterDecl_in_synpred91_Java6387);
        el1=ellipsisParameterDecl();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred91_Java

    // $ANTLR start synpred93_Java
    public final void synpred93_Java_fragment() throws RecognitionException {   
        JavaParser.normalParameterDecl_return no1 = null;

        JavaParser.normalParameterDecl_return no2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1894:9: (no1= normalParameterDecl ( ',' no2= normalParameterDecl )* )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1894:9: no1= normalParameterDecl ( ',' no2= normalParameterDecl )*
        {
        pushFollow(FOLLOW_normalParameterDecl_in_synpred93_Java6413);
        no1=normalParameterDecl();

        state._fsp--;
        if (state.failed) return ;
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1898:9: ( ',' no2= normalParameterDecl )*
        loop187:
        do {
            int alt187=2;
            int LA187_0 = input.LA(1);

            if ( (LA187_0==COMMA) ) {
                alt187=1;
            }


            switch (alt187) {
        	case 1 :
        	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1898:10: ',' no2= normalParameterDecl
        	    {
        	    match(input,COMMA,FOLLOW_COMMA_in_synpred93_Java6438); if (state.failed) return ;
        	    pushFollow(FOLLOW_normalParameterDecl_in_synpred93_Java6442);
        	    no2=normalParameterDecl();

        	    state._fsp--;
        	    if (state.failed) return ;

        	    }
        	    break;

        	default :
        	    break loop187;
            }
        } while (true);


        }
    }
    // $ANTLR end synpred93_Java

    // $ANTLR start synpred94_Java
    public final void synpred94_Java_fragment() throws RecognitionException {   
        JavaParser.normalParameterDecl_return no3 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1903:10: (no3= normalParameterDecl ',' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1903:10: no3= normalParameterDecl ','
        {
        pushFollow(FOLLOW_normalParameterDecl_in_synpred94_Java6480);
        no3=normalParameterDecl();

        state._fsp--;
        if (state.failed) return ;
        match(input,COMMA,FOLLOW_COMMA_in_synpred94_Java6504); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred94_Java

    // $ANTLR start synpred98_Java
    public final void synpred98_Java_fragment() throws RecognitionException {   
        Token ths=null;
        Token sup=null;
        JavaParser.nonWildcardTypeArguments_return nw = null;

        JavaParser.arguments_return ag1 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:9: ( (nw= nonWildcardTypeArguments )? (ths= 'this' | sup= 'super' ) ag1= arguments ';' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:9: (nw= nonWildcardTypeArguments )? (ths= 'this' | sup= 'super' ) ag1= arguments ';'
        {
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:9: (nw= nonWildcardTypeArguments )?
        int alt188=2;
        int LA188_0 = input.LA(1);

        if ( (LA188_0==LT) ) {
            alt188=1;
        }
        switch (alt188) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1986:10: nw= nonWildcardTypeArguments
                {
                pushFollow(FOLLOW_nonWildcardTypeArguments_in_synpred98_Java6803);
                nw=nonWildcardTypeArguments();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }

        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1992:9: (ths= 'this' | sup= 'super' )
        int alt189=2;
        int LA189_0 = input.LA(1);

        if ( (LA189_0==THIS) ) {
            alt189=1;
        }
        else if ( (LA189_0==SUPER) ) {
            alt189=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 189, 0, input);

            throw nvae;
        }
        switch (alt189) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1992:10: ths= 'this'
                {
                ths=(Token)match(input,THIS,FOLLOW_THIS_in_synpred98_Java6846); if (state.failed) return ;

                }
                break;
            case 2 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:1997:13: sup= 'super'
                {
                sup=(Token)match(input,SUPER,FOLLOW_SUPER_in_synpred98_Java6876); if (state.failed) return ;

                }
                break;

        }

        pushFollow(FOLLOW_arguments_in_synpred98_Java6912);
        ag1=arguments();

        state._fsp--;
        if (state.failed) return ;
        match(input,SEMI,FOLLOW_SEMI_in_synpred98_Java6914); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred98_Java

    // $ANTLR start synpred112_Java
    public final void synpred112_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2231:9: ( annotationMethodDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2231:9: annotationMethodDeclaration
        {
        pushFollow(FOLLOW_annotationMethodDeclaration_in_synpred112_Java8156);
        annotationMethodDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred112_Java

    // $ANTLR start synpred113_Java
    public final void synpred113_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2235:9: ( interfaceFieldDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2235:9: interfaceFieldDeclaration
        {
        pushFollow(FOLLOW_interfaceFieldDeclaration_in_synpred113_Java8180);
        interfaceFieldDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred113_Java

    // $ANTLR start synpred114_Java
    public final void synpred114_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2239:9: ( normalClassDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2239:9: normalClassDeclaration
        {
        pushFollow(FOLLOW_normalClassDeclaration_in_synpred114_Java8204);
        normalClassDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred114_Java

    // $ANTLR start synpred115_Java
    public final void synpred115_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2243:9: ( normalInterfaceDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2243:9: normalInterfaceDeclaration
        {
        pushFollow(FOLLOW_normalInterfaceDeclaration_in_synpred115_Java8228);
        normalInterfaceDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred115_Java

    // $ANTLR start synpred116_Java
    public final void synpred116_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2247:9: ( enumDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2247:9: enumDeclaration
        {
        pushFollow(FOLLOW_enumDeclaration_in_synpred116_Java8252);
        enumDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred116_Java

    // $ANTLR start synpred117_Java
    public final void synpred117_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2251:9: ( annotationTypeDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2251:9: annotationTypeDeclaration
        {
        pushFollow(FOLLOW_annotationTypeDeclaration_in_synpred117_Java8276);
        annotationTypeDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred117_Java

    // $ANTLR start synpred121_Java
    public final void synpred121_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2348:9: ( localVariableHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2348:10: localVariableHeader
        {
        pushFollow(FOLLOW_localVariableHeader_in_synpred121_Java8680);
        localVariableHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred121_Java

    // $ANTLR start synpred122_Java
    public final void synpred122_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2352:9: ( typeHeader )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2352:10: typeHeader
        {
        pushFollow(FOLLOW_typeHeader_in_synpred122_Java8708);
        typeHeader();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred122_Java

    // $ANTLR start synpred128_Java
    public final void synpred128_Java_fragment() throws RecognitionException {   
        Token ass=null;
        Token asid=null;
        Token sm1=null;
        JavaParser.expression_return as1 = null;

        JavaParser.expression_return as2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:9: ( (ass= 'assert' | {...}? =>asid= IDENTIFIER ) as1= expression ( ':' as2= expression )? sm1= ';' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:9: (ass= 'assert' | {...}? =>asid= IDENTIFIER ) as1= expression ( ':' as2= expression )? sm1= ';'
        {
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:9: (ass= 'assert' | {...}? =>asid= IDENTIFIER )
        int alt192=2;
        int LA192_0 = input.LA(1);

        if ( (LA192_0==ASSERT) ) {
            alt192=1;
        }
        else if ( (LA192_0==IDENTIFIER) && ((source.allowAsserts()==false&&input.LT(1).getText().equals("assert")))) {
            alt192=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 192, 0, input);

            throw nvae;
        }
        switch (alt192) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2434:14: ass= 'assert'
                {
                ass=(Token)match(input,ASSERT,FOLLOW_ASSERT_in_synpred128_Java9080); if (state.failed) return ;

                }
                break;
            case 2 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2435:14: {...}? =>asid= IDENTIFIER
                {
                if ( !((source.allowAsserts()==false&&input.LT(1).getText().equals("assert"))) ) {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    throw new FailedPredicateException(input, "synpred128_Java", "source.allowAsserts()==false&&input.LT(1).getText().equals(\"assert\")");
                }
                asid=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred128_Java9101); if (state.failed) return ;

                }
                break;

        }

        pushFollow(FOLLOW_expression_in_synpred128_Java9142);
        as1=expression();

        state._fsp--;
        if (state.failed) return ;
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2440:24: ( ':' as2= expression )?
        int alt193=2;
        int LA193_0 = input.LA(1);

        if ( (LA193_0==COLON) ) {
            alt193=1;
        }
        switch (alt193) {
            case 1 :
                // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2440:25: ':' as2= expression
                {
                match(input,COLON,FOLLOW_COLON_in_synpred128_Java9145); if (state.failed) return ;
                pushFollow(FOLLOW_expression_in_synpred128_Java9149);
                as2=expression();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }

        sm1=(Token)match(input,SEMI,FOLLOW_SEMI_in_synpred128_Java9155); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred128_Java

    // $ANTLR start synpred129_Java
    public final void synpred129_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2453:73: ( 'else' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2453:74: 'else'
        {
        match(input,ELSE,FOLLOW_ELSE_in_synpred129_Java9214); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred129_Java

    // $ANTLR start synpred144_Java
    public final void synpred144_Java_fragment() throws RecognitionException {   
        Token sm3=null;
        JavaParser.expression_return ex3 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2534:9: (ex3= expression sm3= ';' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2534:9: ex3= expression sm3= ';'
        {
        pushFollow(FOLLOW_expression_in_synpred144_Java9691);
        ex3=expression();

        state._fsp--;
        if (state.failed) return ;
        sm3=(Token)match(input,SEMI,FOLLOW_SEMI_in_synpred144_Java9696); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred144_Java

    // $ANTLR start synpred145_Java
    public final void synpred145_Java_fragment() throws RecognitionException {   
        Token id4=null;
        JCStatement st4 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2539:9: (id4= IDENTIFIER ':' st4= statement )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2539:9: id4= IDENTIFIER ':' st4= statement
        {
        id4=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred145_Java9727); if (state.failed) return ;
        match(input,COLON,FOLLOW_COLON_in_synpred145_Java9729); if (state.failed) return ;
        pushFollow(FOLLOW_statement_in_synpred145_Java9733);
        st4=statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred145_Java

    // $ANTLR start synpred149_Java
    public final void synpred149_Java_fragment() throws RecognitionException {   
        com.sun.tools.javac.util.List<JCCatch> ca1 = null;

        JavaParser.block_return bl2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2620:13: (ca1= catches 'finally' bl2= block )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2620:13: ca1= catches 'finally' bl2= block
        {
        pushFollow(FOLLOW_catches_in_synpred149_Java10084);
        ca1=catches();

        state._fsp--;
        if (state.failed) return ;
        match(input,FINALLY,FOLLOW_FINALLY_in_synpred149_Java10086); if (state.failed) return ;
        pushFollow(FOLLOW_block_in_synpred149_Java10090);
        bl2=block();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred149_Java

    // $ANTLR start synpred150_Java
    public final void synpred150_Java_fragment() throws RecognitionException {   
        com.sun.tools.javac.util.List<JCCatch> ca2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2625:13: (ca2= catches )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2625:13: ca2= catches
        {
        pushFollow(FOLLOW_catches_in_synpred150_Java10124);
        ca2=catches();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred150_Java

    // $ANTLR start synpred153_Java
    public final void synpred153_Java_fragment() throws RecognitionException {   
        Token cole=null;
        JavaParser.expression_return ex1 = null;

        JCStatement st1 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2710:9: ( 'for' '(' variableModifiers type IDENTIFIER cole= ':' ex1= expression ')' st1= statement )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2710:9: 'for' '(' variableModifiers type IDENTIFIER cole= ':' ex1= expression ')' st1= statement
        {
        match(input,FOR,FOLLOW_FOR_in_synpred153_Java10536); if (state.failed) return ;
        match(input,LPAREN,FOLLOW_LPAREN_in_synpred153_Java10538); if (state.failed) return ;
        pushFollow(FOLLOW_variableModifiers_in_synpred153_Java10540);
        variableModifiers();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_type_in_synpred153_Java10542);
        type();

        state._fsp--;
        if (state.failed) return ;
        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred153_Java10544); if (state.failed) return ;
        cole=(Token)match(input,COLON,FOLLOW_COLON_in_synpred153_Java10548); if (state.failed) return ;
        pushFollow(FOLLOW_expression_in_synpred153_Java10576);
        ex1=expression();

        state._fsp--;
        if (state.failed) return ;
        match(input,RPAREN,FOLLOW_RPAREN_in_synpred153_Java10578); if (state.failed) return ;
        pushFollow(FOLLOW_statement_in_synpred153_Java10582);
        st1=statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred153_Java

    // $ANTLR start synpred157_Java
    public final void synpred157_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2760:9: ( localVariableDeclaration )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2760:9: localVariableDeclaration
        {
        pushFollow(FOLLOW_localVariableDeclaration_in_synpred157_Java10811);
        localVariableDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred157_Java

    // $ANTLR start synpred169_Java
    public final void synpred169_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2870:9: ( '<' '<' '=' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2870:10: '<' '<' '='
        {
        match(input,LT,FOLLOW_LT_in_synpred169_Java11344); if (state.failed) return ;
        match(input,LT,FOLLOW_LT_in_synpred169_Java11346); if (state.failed) return ;
        match(input,EQ,FOLLOW_EQ_in_synpred169_Java11348); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred169_Java

    // $ANTLR start synpred170_Java
    public final void synpred170_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2878:9: ( '>' '>' '>' '=' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2878:10: '>' '>' '>' '='
        {
        match(input,GT,FOLLOW_GT_in_synpred170_Java11387); if (state.failed) return ;
        match(input,GT,FOLLOW_GT_in_synpred170_Java11389); if (state.failed) return ;
        match(input,GT,FOLLOW_GT_in_synpred170_Java11391); if (state.failed) return ;
        match(input,EQ,FOLLOW_EQ_in_synpred170_Java11393); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred170_Java

    // $ANTLR start synpred171_Java
    public final void synpred171_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2886:9: ( '>' '>' '=' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:2886:10: '>' '>' '='
        {
        match(input,GT,FOLLOW_GT_in_synpred171_Java11436); if (state.failed) return ;
        match(input,GT,FOLLOW_GT_in_synpred171_Java11438); if (state.failed) return ;
        match(input,EQ,FOLLOW_EQ_in_synpred171_Java11440); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred171_Java

    // $ANTLR start synpred182_Java
    public final void synpred182_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3091:9: ( '<' '=' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3091:10: '<' '='
        {
        match(input,LT,FOLLOW_LT_in_synpred182_Java12565); if (state.failed) return ;
        match(input,EQ,FOLLOW_EQ_in_synpred182_Java12567); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred182_Java

    // $ANTLR start synpred183_Java
    public final void synpred183_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3099:9: ( '>' '=' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3099:10: '>' '='
        {
        match(input,GT,FOLLOW_GT_in_synpred183_Java12602); if (state.failed) return ;
        match(input,EQ,FOLLOW_EQ_in_synpred183_Java12604); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred183_Java

    // $ANTLR start synpred186_Java
    public final void synpred186_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3142:9: ( '<' '<' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3142:10: '<' '<'
        {
        match(input,LT,FOLLOW_LT_in_synpred186_Java12809); if (state.failed) return ;
        match(input,LT,FOLLOW_LT_in_synpred186_Java12811); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred186_Java

    // $ANTLR start synpred187_Java
    public final void synpred187_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3150:9: ( '>' '>' '>' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3150:10: '>' '>' '>'
        {
        match(input,GT,FOLLOW_GT_in_synpred187_Java12846); if (state.failed) return ;
        match(input,GT,FOLLOW_GT_in_synpred187_Java12848); if (state.failed) return ;
        match(input,GT,FOLLOW_GT_in_synpred187_Java12850); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred187_Java

    // $ANTLR start synpred188_Java
    public final void synpred188_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3158:9: ( '>' '>' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3158:10: '>' '>'
        {
        match(input,GT,FOLLOW_GT_in_synpred188_Java12889); if (state.failed) return ;
        match(input,GT,FOLLOW_GT_in_synpred188_Java12891); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred188_Java

    // $ANTLR start synpred195_Java
    public final void synpred195_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3273:9: ( '-' INTLITERAL )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3273:9: '-' INTLITERAL
        {
        match(input,SUB,FOLLOW_SUB_in_synpred195_Java13475); if (state.failed) return ;
        match(input,INTLITERAL,FOLLOW_INTLITERAL_in_synpred195_Java13477); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred195_Java

    // $ANTLR start synpred196_Java
    public final void synpred196_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3277:9: ( '-' LONGLITERAL )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3277:9: '-' LONGLITERAL
        {
        match(input,SUB,FOLLOW_SUB_in_synpred196_Java13501); if (state.failed) return ;
        match(input,LONGLITERAL,FOLLOW_LONGLITERAL_in_synpred196_Java13503); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred196_Java

    // $ANTLR start synpred197_Java
    public final void synpred197_Java_fragment() throws RecognitionException {   
        JavaParser.unaryExpression_return un2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3281:9: ( '-' un2= unaryExpression )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3281:9: '-' un2= unaryExpression
        {
        match(input,SUB,FOLLOW_SUB_in_synpred197_Java13527); if (state.failed) return ;
        pushFollow(FOLLOW_unaryExpression_in_synpred197_Java13531);
        un2=unaryExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred197_Java

    // $ANTLR start synpred202_Java
    public final void synpred202_Java_fragment() throws RecognitionException {   
        JavaParser.castExpression_return ca = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3315:9: (ca= castExpression )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3315:9: ca= castExpression
        {
        pushFollow(FOLLOW_castExpression_in_synpred202_Java13732);
        ca=castExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred202_Java

    // $ANTLR start synpred206_Java
    public final void synpred206_Java_fragment() throws RecognitionException {   
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3349:9: ( '(' primitiveType ')' unaryExpression )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3349:9: '(' primitiveType ')' unaryExpression
        {
        match(input,LPAREN,FOLLOW_LPAREN_in_synpred206_Java13939); if (state.failed) return ;
        pushFollow(FOLLOW_primitiveType_in_synpred206_Java13941);
        primitiveType();

        state._fsp--;
        if (state.failed) return ;
        match(input,RPAREN,FOLLOW_RPAREN_in_synpred206_Java13943); if (state.failed) return ;
        pushFollow(FOLLOW_unaryExpression_in_synpred206_Java13945);
        unaryExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred206_Java

    // $ANTLR start synpred208_Java
    public final void synpred208_Java_fragment() throws RecognitionException {   
        Token dt1=null;
        Token id1=null;

        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3388:10: (dt1= '.' id1= IDENTIFIER )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3388:10: dt1= '.' id1= IDENTIFIER
        {
        dt1=(Token)match(input,DOT,FOLLOW_DOT_in_synpred208_Java14106); if (state.failed) return ;
        id1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred208_Java14110); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred208_Java

    // $ANTLR start synpred209_Java
    public final void synpred209_Java_fragment() throws RecognitionException {   
        JavaParser.identifierSuffix_return id2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3395:10: (id2= identifierSuffix )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3395:10: id2= identifierSuffix
        {
        pushFollow(FOLLOW_identifierSuffix_in_synpred209_Java14148);
        id2=identifierSuffix();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred209_Java

    // $ANTLR start synpred211_Java
    public final void synpred211_Java_fragment() throws RecognitionException {   
        Token dt2=null;
        Token id6=null;

        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3406:10: (dt2= '.' id6= IDENTIFIER )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3406:10: dt2= '.' id6= IDENTIFIER
        {
        dt2=(Token)match(input,DOT,FOLLOW_DOT_in_synpred211_Java14212); if (state.failed) return ;
        id6=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred211_Java14216); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred211_Java

    // $ANTLR start synpred212_Java
    public final void synpred212_Java_fragment() throws RecognitionException {   
        JavaParser.identifierSuffix_return id7 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3413:10: (id7= identifierSuffix )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3413:10: id7= identifierSuffix
        {
        pushFollow(FOLLOW_identifierSuffix_in_synpred212_Java14254);
        id7=identifierSuffix();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred212_Java

    // $ANTLR start synpred224_Java
    public final void synpred224_Java_fragment() throws RecognitionException {   
        Token lbr2=null;
        Token rbr2=null;
        JavaParser.expression_return exp = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3542:10: (lbr2= '[' exp= expression rbr2= ']' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3542:10: lbr2= '[' exp= expression rbr2= ']'
        {
        lbr2=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_synpred224_Java14841); if (state.failed) return ;
        pushFollow(FOLLOW_expression_in_synpred224_Java14845);
        exp=expression();

        state._fsp--;
        if (state.failed) return ;
        rbr2=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_synpred224_Java14849); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred224_Java

    // $ANTLR start synpred236_Java
    public final void synpred236_Java_fragment() throws RecognitionException {   
        JCExpression cr1 = null;

        JavaParser.classCreatorRest_return cl1 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3645:9: ( 'new' nonWildcardTypeArguments cr1= classOrInterfaceType cl1= classCreatorRest )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3645:9: 'new' nonWildcardTypeArguments cr1= classOrInterfaceType cl1= classCreatorRest
        {
        match(input,NEW,FOLLOW_NEW_in_synpred236_Java15329); if (state.failed) return ;
        pushFollow(FOLLOW_nonWildcardTypeArguments_in_synpred236_Java15331);
        nonWildcardTypeArguments();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_classOrInterfaceType_in_synpred236_Java15335);
        cr1=classOrInterfaceType();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_classCreatorRest_in_synpred236_Java15339);
        cl1=classCreatorRest();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred236_Java

    // $ANTLR start synpred237_Java
    public final void synpred237_Java_fragment() throws RecognitionException {   
        JCExpression cr2 = null;

        JavaParser.classCreatorRest_return cl2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3654:9: ( 'new' cr2= classOrInterfaceType cl2= classCreatorRest )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3654:9: 'new' cr2= classOrInterfaceType cl2= classCreatorRest
        {
        match(input,NEW,FOLLOW_NEW_in_synpred237_Java15363); if (state.failed) return ;
        pushFollow(FOLLOW_classOrInterfaceType_in_synpred237_Java15367);
        cr2=classOrInterfaceType();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_classCreatorRest_in_synpred237_Java15371);
        cl2=classCreatorRest();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred237_Java

    // $ANTLR start synpred238_Java
    public final void synpred238_Java_fragment() throws RecognitionException {   
        Token b2=null;
        JavaParser.anonymousTypeBody_return typebody = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3663:7: ( 'new' '{' typebody= anonymousTypeBody b2= '}' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3663:7: 'new' '{' typebody= anonymousTypeBody b2= '}'
        {
        match(input,NEW,FOLLOW_NEW_in_synpred238_Java15398); if (state.failed) return ;
        match(input,LBRACE,FOLLOW_LBRACE_in_synpred238_Java15400); if (state.failed) return ;
        pushFollow(FOLLOW_anonymousTypeBody_in_synpred238_Java15404);
        typebody=anonymousTypeBody();

        state._fsp--;
        if (state.failed) return ;
        b2=(Token)match(input,RBRACE,FOLLOW_RBRACE_in_synpred238_Java15408); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred238_Java

    // $ANTLR start synpred242_Java
    public final void synpred242_Java_fragment() throws RecognitionException {   
        Token lbr1=null;
        Token rbr1=null;
        JCExpression cr1 = null;

        JavaParser.arrayInitializer_return ar = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3718:9: ( 'new' cr1= createdName '[' ']' (lbr1= '[' rbr1= ']' )* ar= arrayInitializer )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3718:9: 'new' cr1= createdName '[' ']' (lbr1= '[' rbr1= ']' )* ar= arrayInitializer
        {
        match(input,NEW,FOLLOW_NEW_in_synpred242_Java15585); if (state.failed) return ;
        pushFollow(FOLLOW_createdName_in_synpred242_Java15589);
        cr1=createdName();

        state._fsp--;
        if (state.failed) return ;
        match(input,LBRACKET,FOLLOW_LBRACKET_in_synpred242_Java15613); if (state.failed) return ;
        match(input,RBRACKET,FOLLOW_RBRACKET_in_synpred242_Java15615); if (state.failed) return ;
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3723:9: (lbr1= '[' rbr1= ']' )*
        loop210:
        do {
            int alt210=2;
            int LA210_0 = input.LA(1);

            if ( (LA210_0==LBRACKET) ) {
                alt210=1;
            }


            switch (alt210) {
        	case 1 :
        	    // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3723:10: lbr1= '[' rbr1= ']'
        	    {
        	    lbr1=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_synpred242_Java15628); if (state.failed) return ;
        	    rbr1=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_synpred242_Java15632); if (state.failed) return ;

        	    }
        	    break;

        	default :
        	    break loop210;
            }
        } while (true);

        pushFollow(FOLLOW_arrayInitializer_in_synpred242_Java15669);
        ar=arrayInitializer();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred242_Java

    // $ANTLR start synpred243_Java
    public final void synpred243_Java_fragment() throws RecognitionException {   
        JavaParser.expression_return ex2 = null;


        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3752:13: ( '[' ex2= expression ']' )
        // D:\\LINQ in Java\\JavaExt\\MyJavaC\\src\\com\\sun\\tools\\javac\\antlr\\Java.g:3752:13: '[' ex2= expression ']'
        {
        match(input,LBRACKET,FOLLOW_LBRACKET_in_synpred243_Java15764); if (state.failed) return ;
        pushFollow(FOLLOW_expression_in_synpred243_Java15768);
        ex2=expression();

        state._fsp--;
        if (state.failed) return ;
        match(input,RBRACKET,FOLLOW_RBRACKET_in_synpred243_Java15800); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred243_Java

    // Delegated rules

    public final boolean synpred157_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred157_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred63_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred63_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred202_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred202_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred113_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred113_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred196_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred196_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred94_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred94_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred16_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred16_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred45_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred45_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred212_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred212_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred145_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred145_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred170_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred170_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred48_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred48_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred242_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred242_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred53_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred53_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred183_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred183_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred171_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred171_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred149_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred149_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred122_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred122_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred150_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred150_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred112_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred112_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred128_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred128_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred187_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred187_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred182_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred182_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred115_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred115_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred208_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred208_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred43_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred43_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred98_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred98_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred46_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred46_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred224_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred224_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred211_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred211_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred121_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred121_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred243_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred243_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred114_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred114_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred116_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred116_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred129_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred129_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred144_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred144_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred238_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred238_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred117_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred117_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred2_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred186_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred186_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred65_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred65_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred188_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred188_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred91_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred91_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred209_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred209_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred197_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred197_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred169_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred169_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred66_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred66_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred236_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred236_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred13_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred13_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred195_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred195_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred47_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred47_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred64_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred64_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred93_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred93_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred206_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred206_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred50_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred50_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred153_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred153_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred33_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred33_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred34_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred34_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred237_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred237_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred44_Java() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred44_Java_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA2 dfa2 = new DFA2(this);
    protected DFA12 dfa12 = new DFA12(this);
    protected DFA13 dfa13 = new DFA13(this);
    protected DFA15 dfa15 = new DFA15(this);
    protected DFA32 dfa32 = new DFA32(this);
    protected DFA39 dfa39 = new DFA39(this);
    protected DFA49 dfa49 = new DFA49(this);
    protected DFA42 dfa42 = new DFA42(this);
    protected DFA53 dfa53 = new DFA53(this);
    protected DFA74 dfa74 = new DFA74(this);
    protected DFA73 dfa73 = new DFA73(this);
    protected DFA79 dfa79 = new DFA79(this);
    protected DFA90 dfa90 = new DFA90(this);
    protected DFA94 dfa94 = new DFA94(this);
    protected DFA103 dfa103 = new DFA103(this);
    protected DFA99 dfa99 = new DFA99(this);
    protected DFA114 dfa114 = new DFA114(this);
    protected DFA117 dfa117 = new DFA117(this);
    protected DFA130 dfa130 = new DFA130(this);
    protected DFA135 dfa135 = new DFA135(this);
    protected DFA138 dfa138 = new DFA138(this);
    protected DFA141 dfa141 = new DFA141(this);
    protected DFA143 dfa143 = new DFA143(this);
    protected DFA151 dfa151 = new DFA151(this);
    protected DFA150 dfa150 = new DFA150(this);
    protected DFA158 dfa158 = new DFA158(this);
    protected DFA180 dfa180 = new DFA180(this);
    protected DFA181 dfa181 = new DFA181(this);
    protected DFA182 dfa182 = new DFA182(this);
    static final String DFA2_eotS =
        "\25\uffff";
    static final String DFA2_eofS =
        "\1\22\24\uffff";
    static final String DFA2_minS =
        "\1\4\1\0\23\uffff";
    static final String DFA2_maxS =
        "\1\157\1\0\23\uffff";
    static final String DFA2_acceptS =
        "\2\uffff\1\1\1\2\15\uffff\2\2\2\uffff";
    static final String DFA2_specialS =
        "\1\0\1\1\23\uffff}>";
    static final String[] DFA2_transitionS = {
            "\1\21\1\3\7\uffff\1\3\6\uffff\1\3\1\uffff\1\3\6\uffff\1\3\2"+
            "\uffff\1\22\1\uffff\1\3\1\uffff\1\2\3\3\2\uffff\2\3\2\uffff"+
            "\1\3\3\uffff\1\3\2\uffff\1\3\20\uffff\1\22\50\uffff\1\1",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
    static final short[][] DFA2_transition;

    static {
        int numStates = DFA2_transitionS.length;
        DFA2_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
        }
    }

    class DFA2 extends DFA {

        public DFA2(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 2;
            this.eot = DFA2_eot;
            this.eof = DFA2_eof;
            this.min = DFA2_min;
            this.max = DFA2_max;
            this.accept = DFA2_accept;
            this.special = DFA2_special;
            this.transition = DFA2_transition;
        }
        public String getDescription() {
            return "609:9: ( ( annotations )? packageDeclaration )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA2_0 = input.LA(1);

                         
                        int index2_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA2_0==MONKEYS_AT) ) {s = 1;}

                        else if ( (LA2_0==PACKAGE) ) {s = 2;}

                        else if ( (LA2_0==ABSTRACT||LA2_0==CLASS||LA2_0==ENUM||LA2_0==FINAL||LA2_0==IMPORT||LA2_0==NATIVE||(LA2_0>=PRIVATE && LA2_0<=PUBLIC)||(LA2_0>=STATIC && LA2_0<=STRICTFP)||LA2_0==SYNCHRONIZED||LA2_0==TRANSIENT||LA2_0==VOLATILE) ) {s = 3;}

                        else if ( (LA2_0==IDENTIFIER) && ((source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) {s = 17;}

                        else if ( (LA2_0==EOF||LA2_0==INTERFACE||LA2_0==SEMI) ) {s = 18;}

                         
                        input.seek(index2_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA2_1 = input.LA(1);

                         
                        int index2_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_Java()) ) {s = 2;}

                        else if ( (true) ) {s = 18;}

                         
                        input.seek(index2_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 2, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA12_eotS =
        "\21\uffff";
    static final String DFA12_eofS =
        "\21\uffff";
    static final String DFA12_minS =
        "\1\4\14\0\4\uffff";
    static final String DFA12_maxS =
        "\1\157\14\0\4\uffff";
    static final String DFA12_acceptS =
        "\15\uffff\3\1\1\2";
    static final String DFA12_specialS =
        "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\4\uffff}>";
    static final String[] DFA12_transitionS = {
            "\1\17\1\6\7\uffff\1\15\6\uffff\1\16\1\uffff\1\7\11\uffff\1"+
            "\20\1\uffff\1\10\2\uffff\1\4\1\3\1\2\2\uffff\1\5\1\14\2\uffff"+
            "\1\11\3\uffff\1\12\2\uffff\1\13\71\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
    static final short[][] DFA12_transition;

    static {
        int numStates = DFA12_transitionS.length;
        DFA12_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
        }
    }

    class DFA12 extends DFA {

        public DFA12(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 12;
            this.eot = DFA12_eot;
            this.eof = DFA12_eof;
            this.min = DFA12_min;
            this.max = DFA12_max;
            this.accept = DFA12_accept;
            this.special = DFA12_special;
            this.transition = DFA12_transition;
        }
        public String getDescription() {
            return "723:1: classOrInterfaceDeclaration returns [JCClassDecl tree] : ( ( classHeader | enumHeader )=> classDeclaration | interfaceDeclaration );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA12_0 = input.LA(1);

                         
                        int index12_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA12_0==MONKEYS_AT) ) {s = 1;}

                        else if ( (LA12_0==PUBLIC) ) {s = 2;}

                        else if ( (LA12_0==PROTECTED) ) {s = 3;}

                        else if ( (LA12_0==PRIVATE) ) {s = 4;}

                        else if ( (LA12_0==STATIC) ) {s = 5;}

                        else if ( (LA12_0==ABSTRACT) ) {s = 6;}

                        else if ( (LA12_0==FINAL) ) {s = 7;}

                        else if ( (LA12_0==NATIVE) ) {s = 8;}

                        else if ( (LA12_0==SYNCHRONIZED) ) {s = 9;}

                        else if ( (LA12_0==TRANSIENT) ) {s = 10;}

                        else if ( (LA12_0==VOLATILE) ) {s = 11;}

                        else if ( (LA12_0==STRICTFP) ) {s = 12;}

                        else if ( (LA12_0==CLASS) && (synpred13_Java())) {s = 13;}

                        else if ( (LA12_0==ENUM) && (synpred13_Java())) {s = 14;}

                        else if ( (LA12_0==IDENTIFIER) && ((synpred13_Java()&&(source.allowEnums()==false&&input.LT(1).getText().equals("enum"))))) {s = 15;}

                        else if ( (LA12_0==INTERFACE) ) {s = 16;}

                         
                        input.seek(index12_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA12_1 = input.LA(1);

                         
                        int index12_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (((synpred13_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred13_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA12_2 = input.LA(1);

                         
                        int index12_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_2);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA12_3 = input.LA(1);

                         
                        int index12_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_3);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA12_4 = input.LA(1);

                         
                        int index12_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_4);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA12_5 = input.LA(1);

                         
                        int index12_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_5);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA12_6 = input.LA(1);

                         
                        int index12_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_6);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA12_7 = input.LA(1);

                         
                        int index12_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_7);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA12_8 = input.LA(1);

                         
                        int index12_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_8);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA12_9 = input.LA(1);

                         
                        int index12_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_9);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA12_10 = input.LA(1);

                         
                        int index12_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_10);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA12_11 = input.LA(1);

                         
                        int index12_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_11);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA12_12 = input.LA(1);

                         
                        int index12_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred13_Java()) ) {s = 15;}

                        else if ( (true) ) {s = 16;}

                         
                        input.seek(index12_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 12, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA13_eotS =
        "\34\uffff";
    static final String DFA13_eofS =
        "\34\uffff";
    static final String DFA13_minS =
        "\1\4\16\uffff\1\0\14\uffff";
    static final String DFA13_maxS =
        "\1\157\16\uffff\1\0\14\uffff";
    static final String DFA13_acceptS =
        "\1\uffff\1\15\16\uffff\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1"+
        "\13\1\14\1\1";
    static final String DFA13_specialS =
        "\17\uffff\1\0\14\uffff}>";
    static final String[] DFA13_transitionS = {
            "\1\1\1\24\1\uffff\1\1\1\uffff\1\1\2\uffff\2\1\4\uffff\1\1\1"+
            "\uffff\1\1\1\uffff\1\25\1\uffff\1\1\6\uffff\3\1\1\26\2\uffff"+
            "\1\22\1\21\1\20\1\uffff\1\1\1\23\1\32\2\uffff\1\27\3\uffff\1"+
            "\30\1\uffff\1\1\1\31\26\uffff\1\1\42\uffff\1\17",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
    static final short[][] DFA13_transition;

    static {
        int numStates = DFA13_transitionS.length;
        DFA13_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
        }
    }

    class DFA13 extends DFA {

        public DFA13(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 13;
            this.eot = DFA13_eot;
            this.eof = DFA13_eof;
            this.min = DFA13_min;
            this.max = DFA13_max;
            this.accept = DFA13_accept;
            this.special = DFA13_special;
            this.transition = DFA13_transition;
        }
        public String getDescription() {
            return "()* loopback of 767:5: ( options {k=1; backtrack=false; } : {...}?an= annotation | pub= 'public' | pro= 'protected' | pri= 'private' | st= 'static' | ab= 'abstract' | fi= 'final' | na= 'native' | syn= 'synchronized' | tra= 'transient' | vo= 'volatile' | str= 'strictfp' )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA13_15 = input.LA(1);

                         
                        int index13_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)) ) {s = 27;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index13_15);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 13, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA15_eotS =
        "\20\uffff";
    static final String DFA15_eofS =
        "\20\uffff";
    static final String DFA15_minS =
        "\1\4\14\0\3\uffff";
    static final String DFA15_maxS =
        "\1\157\14\0\3\uffff";
    static final String DFA15_acceptS =
        "\15\uffff\1\1\2\2";
    static final String DFA15_specialS =
        "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\3\uffff}>";
    static final String[] DFA15_transitionS = {
            "\1\17\1\6\7\uffff\1\15\6\uffff\1\16\1\uffff\1\7\13\uffff\1"+
            "\10\2\uffff\1\4\1\3\1\2\2\uffff\1\5\1\14\2\uffff\1\11\3\uffff"+
            "\1\12\2\uffff\1\13\71\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            ""
    };

    static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS);
    static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS);
    static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS);
    static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS);
    static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS);
    static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS);
    static final short[][] DFA15_transition;

    static {
        int numStates = DFA15_transitionS.length;
        DFA15_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]);
        }
    }

    class DFA15 extends DFA {

        public DFA15(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 15;
            this.eot = DFA15_eot;
            this.eof = DFA15_eof;
            this.min = DFA15_min;
            this.max = DFA15_max;
            this.accept = DFA15_accept;
            this.special = DFA15_special;
            this.transition = DFA15_transition;
        }
        public String getDescription() {
            return "903:1: classDeclaration returns [JCClassDecl tree] : ( ( modifiers 'class' )=> normalClassDeclaration | enumDeclaration );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA15_0 = input.LA(1);

                         
                        int index15_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA15_0==MONKEYS_AT) ) {s = 1;}

                        else if ( (LA15_0==PUBLIC) ) {s = 2;}

                        else if ( (LA15_0==PROTECTED) ) {s = 3;}

                        else if ( (LA15_0==PRIVATE) ) {s = 4;}

                        else if ( (LA15_0==STATIC) ) {s = 5;}

                        else if ( (LA15_0==ABSTRACT) ) {s = 6;}

                        else if ( (LA15_0==FINAL) ) {s = 7;}

                        else if ( (LA15_0==NATIVE) ) {s = 8;}

                        else if ( (LA15_0==SYNCHRONIZED) ) {s = 9;}

                        else if ( (LA15_0==TRANSIENT) ) {s = 10;}

                        else if ( (LA15_0==VOLATILE) ) {s = 11;}

                        else if ( (LA15_0==STRICTFP) ) {s = 12;}

                        else if ( (LA15_0==CLASS) && (synpred16_Java())) {s = 13;}

                        else if ( (LA15_0==ENUM) ) {s = 14;}

                        else if ( (LA15_0==IDENTIFIER) && ((source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) {s = 15;}

                         
                        input.seek(index15_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA15_1 = input.LA(1);

                         
                        int index15_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred16_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 13;}

                        else if ( ((input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)) ) {s = 15;}

                         
                        input.seek(index15_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA15_2 = input.LA(1);

                         
                        int index15_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_2);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA15_3 = input.LA(1);

                         
                        int index15_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_3);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA15_4 = input.LA(1);

                         
                        int index15_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_4);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA15_5 = input.LA(1);

                         
                        int index15_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_5);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA15_6 = input.LA(1);

                         
                        int index15_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_6);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA15_7 = input.LA(1);

                         
                        int index15_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_7);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA15_8 = input.LA(1);

                         
                        int index15_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_8);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA15_9 = input.LA(1);

                         
                        int index15_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_9);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA15_10 = input.LA(1);

                         
                        int index15_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_10);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA15_11 = input.LA(1);

                         
                        int index15_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_11);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA15_12 = input.LA(1);

                         
                        int index15_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index15_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 15, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA32_eotS =
        "\17\uffff";
    static final String DFA32_eofS =
        "\17\uffff";
    static final String DFA32_minS =
        "\1\5\14\0\2\uffff";
    static final String DFA32_maxS =
        "\1\157\14\0\2\uffff";
    static final String DFA32_acceptS =
        "\15\uffff\1\1\1\2";
    static final String DFA32_specialS =
        "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\2\uffff}>";
    static final String[] DFA32_transitionS = {
            "\1\6\20\uffff\1\7\11\uffff\1\15\1\uffff\1\10\2\uffff\1\4\1"+
            "\3\1\2\2\uffff\1\5\1\14\2\uffff\1\11\3\uffff\1\12\2\uffff\1"+
            "\13\71\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };

    static final short[] DFA32_eot = DFA.unpackEncodedString(DFA32_eotS);
    static final short[] DFA32_eof = DFA.unpackEncodedString(DFA32_eofS);
    static final char[] DFA32_min = DFA.unpackEncodedStringToUnsignedChars(DFA32_minS);
    static final char[] DFA32_max = DFA.unpackEncodedStringToUnsignedChars(DFA32_maxS);
    static final short[] DFA32_accept = DFA.unpackEncodedString(DFA32_acceptS);
    static final short[] DFA32_special = DFA.unpackEncodedString(DFA32_specialS);
    static final short[][] DFA32_transition;

    static {
        int numStates = DFA32_transitionS.length;
        DFA32_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA32_transition[i] = DFA.unpackEncodedString(DFA32_transitionS[i]);
        }
    }

    class DFA32 extends DFA {

        public DFA32(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 32;
            this.eot = DFA32_eot;
            this.eof = DFA32_eof;
            this.min = DFA32_min;
            this.max = DFA32_max;
            this.accept = DFA32_accept;
            this.special = DFA32_special;
            this.transition = DFA32_transition;
        }
        public String getDescription() {
            return "1189:1: interfaceDeclaration returns [JCClassDecl tree] : ( ( interfaceHeader )=> normalInterfaceDeclaration | ( annotationHeader )=> annotationTypeDeclaration );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA32_0 = input.LA(1);

                         
                        int index32_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA32_0==MONKEYS_AT) ) {s = 1;}

                        else if ( (LA32_0==PUBLIC) ) {s = 2;}

                        else if ( (LA32_0==PROTECTED) ) {s = 3;}

                        else if ( (LA32_0==PRIVATE) ) {s = 4;}

                        else if ( (LA32_0==STATIC) ) {s = 5;}

                        else if ( (LA32_0==ABSTRACT) ) {s = 6;}

                        else if ( (LA32_0==FINAL) ) {s = 7;}

                        else if ( (LA32_0==NATIVE) ) {s = 8;}

                        else if ( (LA32_0==SYNCHRONIZED) ) {s = 9;}

                        else if ( (LA32_0==TRANSIENT) ) {s = 10;}

                        else if ( (LA32_0==VOLATILE) ) {s = 11;}

                        else if ( (LA32_0==STRICTFP) ) {s = 12;}

                        else if ( (LA32_0==INTERFACE) && (synpred33_Java())) {s = 13;}

                         
                        input.seek(index32_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA32_1 = input.LA(1);

                         
                        int index32_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred33_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 13;}

                        else if ( (((synpred34_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||synpred34_Java())) ) {s = 14;}

                         
                        input.seek(index32_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA32_2 = input.LA(1);

                         
                        int index32_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_2);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA32_3 = input.LA(1);

                         
                        int index32_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_3);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA32_4 = input.LA(1);

                         
                        int index32_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_4);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA32_5 = input.LA(1);

                         
                        int index32_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_5);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA32_6 = input.LA(1);

                         
                        int index32_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_6);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA32_7 = input.LA(1);

                         
                        int index32_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_7);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA32_8 = input.LA(1);

                         
                        int index32_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_8);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA32_9 = input.LA(1);

                         
                        int index32_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_9);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA32_10 = input.LA(1);

                         
                        int index32_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_10);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA32_11 = input.LA(1);

                         
                        int index32_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_11);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA32_12 = input.LA(1);

                         
                        int index32_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_Java()) ) {s = 13;}

                        else if ( (synpred34_Java()) ) {s = 14;}

                         
                        input.seek(index32_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 32, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA39_eotS =
        "\34\uffff";
    static final String DFA39_eofS =
        "\34\uffff";
    static final String DFA39_minS =
        "\1\4\25\0\6\uffff";
    static final String DFA39_maxS =
        "\1\157\25\0\6\uffff";
    static final String DFA39_acceptS =
        "\26\uffff\2\2\2\3\1\4\1\1";
    static final String DFA39_specialS =
        "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
        "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\6\uffff}>";
    static final String[] DFA39_transitionS = {
            "\1\15\1\6\1\uffff\1\16\1\uffff\1\20\2\uffff\1\17\1\30\4\uffff"+
            "\1\25\1\uffff\1\31\1\uffff\1\7\1\uffff\1\24\6\uffff\1\22\1\32"+
            "\1\23\1\10\2\uffff\1\4\1\3\1\2\1\uffff\1\21\1\5\1\14\2\uffff"+
            "\1\11\3\uffff\1\12\1\uffff\1\27\1\13\26\uffff\1\26\42\uffff"+
            "\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA39_eot = DFA.unpackEncodedString(DFA39_eotS);
    static final short[] DFA39_eof = DFA.unpackEncodedString(DFA39_eofS);
    static final char[] DFA39_min = DFA.unpackEncodedStringToUnsignedChars(DFA39_minS);
    static final char[] DFA39_max = DFA.unpackEncodedStringToUnsignedChars(DFA39_maxS);
    static final short[] DFA39_accept = DFA.unpackEncodedString(DFA39_acceptS);
    static final short[] DFA39_special = DFA.unpackEncodedString(DFA39_specialS);
    static final short[][] DFA39_transition;

    static {
        int numStates = DFA39_transitionS.length;
        DFA39_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA39_transition[i] = DFA.unpackEncodedString(DFA39_transitionS[i]);
        }
    }

    class DFA39 extends DFA {

        public DFA39(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 39;
            this.eot = DFA39_eot;
            this.eof = DFA39_eof;
            this.min = DFA39_min;
            this.max = DFA39_max;
            this.accept = DFA39_accept;
            this.special = DFA39_special;
            this.transition = DFA39_transition;
        }
        public String getDescription() {
            return "1312:1: memberDecl returns [com.sun.tools.javac.util.List<JCTree> list] : ( ( fieldHeader )=> fieldDeclaration | ( methodHeader )=> methodDeclaration | ( classHeader | enumHeader )=> classDeclaration | ( interfaceHeader | annotationHeader )=> interfaceDeclaration );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA39_0 = input.LA(1);

                         
                        int index39_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA39_0==MONKEYS_AT) ) {s = 1;}

                        else if ( (LA39_0==PUBLIC) ) {s = 2;}

                        else if ( (LA39_0==PROTECTED) ) {s = 3;}

                        else if ( (LA39_0==PRIVATE) ) {s = 4;}

                        else if ( (LA39_0==STATIC) ) {s = 5;}

                        else if ( (LA39_0==ABSTRACT) ) {s = 6;}

                        else if ( (LA39_0==FINAL) ) {s = 7;}

                        else if ( (LA39_0==NATIVE) ) {s = 8;}

                        else if ( (LA39_0==SYNCHRONIZED) ) {s = 9;}

                        else if ( (LA39_0==TRANSIENT) ) {s = 10;}

                        else if ( (LA39_0==VOLATILE) ) {s = 11;}

                        else if ( (LA39_0==STRICTFP) ) {s = 12;}

                        else if ( (LA39_0==IDENTIFIER) ) {s = 13;}

                        else if ( (LA39_0==BOOLEAN) ) {s = 14;}

                        else if ( (LA39_0==CHAR) ) {s = 15;}

                        else if ( (LA39_0==BYTE) ) {s = 16;}

                        else if ( (LA39_0==SHORT) ) {s = 17;}

                        else if ( (LA39_0==INT) ) {s = 18;}

                        else if ( (LA39_0==LONG) ) {s = 19;}

                        else if ( (LA39_0==FLOAT) ) {s = 20;}

                        else if ( (LA39_0==DOUBLE) ) {s = 21;}

                        else if ( (LA39_0==LT) && (synpred44_Java())) {s = 22;}

                        else if ( (LA39_0==VOID) && (synpred44_Java())) {s = 23;}

                        else if ( (LA39_0==CLASS) && (synpred46_Java())) {s = 24;}

                        else if ( (LA39_0==ENUM) && (synpred46_Java())) {s = 25;}

                        else if ( (LA39_0==INTERFACE) && (synpred48_Java())) {s = 26;}

                         
                        input.seek(index39_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA39_1 = input.LA(1);

                         
                        int index39_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred43_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 27;}

                        else if ( (((synpred44_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred44_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 23;}

                        else if ( (((synpred46_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred46_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 25;}

                        else if ( (((synpred48_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||synpred48_Java()||(synpred48_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 26;}

                         
                        input.seek(index39_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA39_2 = input.LA(1);

                         
                        int index39_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_2);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA39_3 = input.LA(1);

                         
                        int index39_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_3);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA39_4 = input.LA(1);

                         
                        int index39_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_4);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA39_5 = input.LA(1);

                         
                        int index39_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_5);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA39_6 = input.LA(1);

                         
                        int index39_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_6);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA39_7 = input.LA(1);

                         
                        int index39_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_7);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA39_8 = input.LA(1);

                         
                        int index39_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_8);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA39_9 = input.LA(1);

                         
                        int index39_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_9);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA39_10 = input.LA(1);

                         
                        int index39_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_10);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA39_11 = input.LA(1);

                         
                        int index39_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_11);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA39_12 = input.LA(1);

                         
                        int index39_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( (synpred46_Java()) ) {s = 25;}

                        else if ( (synpred48_Java()) ) {s = 26;}

                         
                        input.seek(index39_12);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA39_13 = input.LA(1);

                         
                        int index39_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                        else if ( ((synpred46_Java()&&(source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) ) {s = 25;}

                         
                        input.seek(index39_13);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA39_14 = input.LA(1);

                         
                        int index39_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_14);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA39_15 = input.LA(1);

                         
                        int index39_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_15);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA39_16 = input.LA(1);

                         
                        int index39_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_16);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA39_17 = input.LA(1);

                         
                        int index39_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_17);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA39_18 = input.LA(1);

                         
                        int index39_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_18);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA39_19 = input.LA(1);

                         
                        int index39_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_19);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA39_20 = input.LA(1);

                         
                        int index39_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_20);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA39_21 = input.LA(1);

                         
                        int index39_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_Java()) ) {s = 27;}

                        else if ( (synpred44_Java()) ) {s = 23;}

                         
                        input.seek(index39_21);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 39, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA49_eotS =
        "\31\uffff";
    static final String DFA49_eofS =
        "\31\uffff";
    static final String DFA49_minS =
        "\1\4\16\0\12\uffff";
    static final String DFA49_maxS =
        "\1\157\16\0\12\uffff";
    static final String DFA49_acceptS =
        "\17\uffff\1\2\10\uffff\1\1";
    static final String DFA49_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\12\uffff}>";
    static final String[] DFA49_transitionS = {
            "\1\16\1\6\1\uffff\1\17\1\uffff\1\17\2\uffff\1\17\5\uffff\1"+
            "\17\3\uffff\1\7\1\uffff\1\17\6\uffff\1\17\1\uffff\1\17\1\10"+
            "\2\uffff\1\4\1\3\1\2\1\uffff\1\17\1\5\1\14\2\uffff\1\11\3\uffff"+
            "\1\12\1\uffff\1\17\1\13\26\uffff\1\15\42\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA49_eot = DFA.unpackEncodedString(DFA49_eotS);
    static final short[] DFA49_eof = DFA.unpackEncodedString(DFA49_eofS);
    static final char[] DFA49_min = DFA.unpackEncodedStringToUnsignedChars(DFA49_minS);
    static final char[] DFA49_max = DFA.unpackEncodedStringToUnsignedChars(DFA49_maxS);
    static final short[] DFA49_accept = DFA.unpackEncodedString(DFA49_acceptS);
    static final short[] DFA49_special = DFA.unpackEncodedString(DFA49_specialS);
    static final short[][] DFA49_transition;

    static {
        int numStates = DFA49_transitionS.length;
        DFA49_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA49_transition[i] = DFA.unpackEncodedString(DFA49_transitionS[i]);
        }
    }

    class DFA49 extends DFA {

        public DFA49(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 49;
            this.eot = DFA49_eot;
            this.eof = DFA49_eof;
            this.min = DFA49_min;
            this.max = DFA49_max;
            this.accept = DFA49_accept;
            this.special = DFA49_special;
            this.transition = DFA49_transition;
        }
        public String getDescription() {
            return "1338:1: methodDeclaration returns [JCMethodDecl tree] : ( ( modifiers ( typeParameters )? IDENTIFIER '(' )=>mo2= modifiers (ty2= typeParameters )? id2= IDENTIFIER fo2= formalParameters ( 'throws' qu2= qualifiedNameList )? lbr= '{' (ex1= explicitConstructorInvocation )? (bl2= blockStatement )* rbr= '}' | mo1= modifiers (ty1= typeParameters )? (ty= type | vod= 'void' ) id1= IDENTIFIER fo1= formalParameters (lb= '[' rb= ']' )* ( 'throws' qu1= qualifiedNameList )? (bl= block | ';' ) );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA49_1 = input.LA(1);

                         
                        int index49_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred50_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 24;}

                        else if ( ((input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)) ) {s = 15;}

                         
                        input.seek(index49_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA49_2 = input.LA(1);

                         
                        int index49_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA49_3 = input.LA(1);

                         
                        int index49_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA49_4 = input.LA(1);

                         
                        int index49_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA49_5 = input.LA(1);

                         
                        int index49_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA49_6 = input.LA(1);

                         
                        int index49_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA49_7 = input.LA(1);

                         
                        int index49_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA49_8 = input.LA(1);

                         
                        int index49_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA49_9 = input.LA(1);

                         
                        int index49_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA49_10 = input.LA(1);

                         
                        int index49_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA49_11 = input.LA(1);

                         
                        int index49_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA49_12 = input.LA(1);

                         
                        int index49_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA49_13 = input.LA(1);

                         
                        int index49_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA49_14 = input.LA(1);

                         
                        int index49_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred50_Java()) ) {s = 24;}

                        else if ( (true) ) {s = 15;}

                         
                        input.seek(index49_14);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 49, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA42_eotS =
        "\75\uffff";
    static final String DFA42_eofS =
        "\75\uffff";
    static final String DFA42_minS =
        "\1\4\1\uffff\27\0\44\uffff";
    static final String DFA42_maxS =
        "\1\u00de\1\uffff\27\0\44\uffff";
    static final String DFA42_acceptS =
        "\1\uffff\1\1\27\uffff\1\2\43\uffff";
    static final String DFA42_specialS =
        "\2\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\44\uffff}>";
    static final String[] DFA42_transitionS = {
            "\1\5\2\31\1\20\1\31\1\22\2\uffff\1\21\1\31\1\uffff\1\31\1\uffff"+
            "\1\31\1\27\1\uffff\1\31\1\uffff\1\31\1\uffff\1\26\1\31\1\uffff"+
            "\1\31\3\uffff\1\24\1\31\1\25\1\31\1\17\1\uffff\4\31\1\23\2\31"+
            "\1\3\2\31\1\2\1\31\1\uffff\2\31\1\30\2\31\1\6\1\7\1\10\1\11"+
            "\1\12\1\13\1\14\1\15\1\16\1\4\1\uffff\2\31\2\uffff\1\31\5\uffff"+
            "\1\1\2\31\10\uffff\4\31\24\uffff\1\31\156\uffff\1\31",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA42_eot = DFA.unpackEncodedString(DFA42_eotS);
    static final short[] DFA42_eof = DFA.unpackEncodedString(DFA42_eofS);
    static final char[] DFA42_min = DFA.unpackEncodedStringToUnsignedChars(DFA42_minS);
    static final char[] DFA42_max = DFA.unpackEncodedStringToUnsignedChars(DFA42_maxS);
    static final short[] DFA42_accept = DFA.unpackEncodedString(DFA42_acceptS);
    static final short[] DFA42_special = DFA.unpackEncodedString(DFA42_specialS);
    static final short[][] DFA42_transition;

    static {
        int numStates = DFA42_transitionS.length;
        DFA42_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA42_transition[i] = DFA.unpackEncodedString(DFA42_transitionS[i]);
        }
    }

    class DFA42 extends DFA {

        public DFA42(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 42;
            this.eot = DFA42_eot;
            this.eof = DFA42_eof;
            this.min = DFA42_min;
            this.max = DFA42_max;
            this.accept = DFA42_accept;
            this.special = DFA42_special;
            this.transition = DFA42_transition;
        }
        public String getDescription() {
            return "1398:9: (ex1= explicitConstructorInvocation )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA42_2 = input.LA(1);

                         
                        int index42_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_2);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA42_3 = input.LA(1);

                         
                        int index42_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_3);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA42_4 = input.LA(1);

                         
                        int index42_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_4);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA42_5 = input.LA(1);

                         
                        int index42_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_5);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA42_6 = input.LA(1);

                         
                        int index42_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_6);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA42_7 = input.LA(1);

                         
                        int index42_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_7);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA42_8 = input.LA(1);

                         
                        int index42_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_8);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA42_9 = input.LA(1);

                         
                        int index42_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_9);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA42_10 = input.LA(1);

                         
                        int index42_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_10);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA42_11 = input.LA(1);

                         
                        int index42_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_11);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA42_12 = input.LA(1);

                         
                        int index42_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_12);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA42_13 = input.LA(1);

                         
                        int index42_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_13);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA42_14 = input.LA(1);

                         
                        int index42_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_14);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA42_15 = input.LA(1);

                         
                        int index42_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_15);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA42_16 = input.LA(1);

                         
                        int index42_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_16);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA42_17 = input.LA(1);

                         
                        int index42_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_17);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA42_18 = input.LA(1);

                         
                        int index42_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_18);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA42_19 = input.LA(1);

                         
                        int index42_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_19);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA42_20 = input.LA(1);

                         
                        int index42_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_20);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA42_21 = input.LA(1);

                         
                        int index42_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_21);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA42_22 = input.LA(1);

                         
                        int index42_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_22);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA42_23 = input.LA(1);

                         
                        int index42_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_23);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA42_24 = input.LA(1);

                         
                        int index42_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred53_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index42_24);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 42, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA53_eotS =
        "\35\uffff";
    static final String DFA53_eofS =
        "\35\uffff";
    static final String DFA53_minS =
        "\1\4\25\0\7\uffff";
    static final String DFA53_maxS =
        "\1\157\25\0\7\uffff";
    static final String DFA53_acceptS =
        "\26\uffff\1\2\1\uffff\1\3\1\4\1\uffff\1\5\1\1";
    static final String DFA53_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\7\uffff}>";
    static final String[] DFA53_transitionS = {
            "\1\15\1\6\1\uffff\1\16\1\uffff\1\20\2\uffff\1\17\1\31\4\uffff"+
            "\1\25\1\uffff\1\31\1\uffff\1\7\1\uffff\1\24\6\uffff\1\22\1\30"+
            "\1\23\1\10\2\uffff\1\4\1\3\1\2\1\uffff\1\21\1\5\1\14\2\uffff"+
            "\1\11\3\uffff\1\12\1\uffff\1\26\1\13\20\uffff\1\33\5\uffff\1"+
            "\26\42\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA53_eot = DFA.unpackEncodedString(DFA53_eotS);
    static final short[] DFA53_eof = DFA.unpackEncodedString(DFA53_eofS);
    static final char[] DFA53_min = DFA.unpackEncodedStringToUnsignedChars(DFA53_minS);
    static final char[] DFA53_max = DFA.unpackEncodedStringToUnsignedChars(DFA53_maxS);
    static final short[] DFA53_accept = DFA.unpackEncodedString(DFA53_acceptS);
    static final short[] DFA53_special = DFA.unpackEncodedString(DFA53_specialS);
    static final short[][] DFA53_transition;

    static {
        int numStates = DFA53_transitionS.length;
        DFA53_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA53_transition[i] = DFA.unpackEncodedString(DFA53_transitionS[i]);
        }
    }

    class DFA53 extends DFA {

        public DFA53(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 53;
            this.eot = DFA53_eot;
            this.eof = DFA53_eof;
            this.min = DFA53_min;
            this.max = DFA53_max;
            this.accept = DFA53_accept;
            this.special = DFA53_special;
            this.transition = DFA53_transition;
        }
        public String getDescription() {
            return "1539:1: interfaceBodyDeclaration returns [com.sun.tools.javac.util.List<JCTree> list] : ( interfaceFieldDeclaration | interfaceMethodDeclaration | interfaceDeclaration | classDeclaration | ';' );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA53_1 = input.LA(1);

                         
                        int index53_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred63_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 28;}

                        else if ( ((synpred64_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 22;}

                        else if ( (((synpred65_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred65_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||synpred65_Java())) ) {s = 24;}

                        else if ( (((synpred66_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred66_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 25;}

                         
                        input.seek(index53_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA53_2 = input.LA(1);

                         
                        int index53_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA53_3 = input.LA(1);

                         
                        int index53_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA53_4 = input.LA(1);

                         
                        int index53_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA53_5 = input.LA(1);

                         
                        int index53_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA53_6 = input.LA(1);

                         
                        int index53_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA53_7 = input.LA(1);

                         
                        int index53_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA53_8 = input.LA(1);

                         
                        int index53_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA53_9 = input.LA(1);

                         
                        int index53_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA53_10 = input.LA(1);

                         
                        int index53_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA53_11 = input.LA(1);

                         
                        int index53_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA53_12 = input.LA(1);

                         
                        int index53_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( (synpred65_Java()) ) {s = 24;}

                        else if ( (synpred66_Java()) ) {s = 25;}

                         
                        input.seek(index53_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA53_13 = input.LA(1);

                         
                        int index53_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                        else if ( ((synpred66_Java()&&(source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) ) {s = 25;}

                         
                        input.seek(index53_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA53_14 = input.LA(1);

                         
                        int index53_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA53_15 = input.LA(1);

                         
                        int index53_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA53_16 = input.LA(1);

                         
                        int index53_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA53_17 = input.LA(1);

                         
                        int index53_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA53_18 = input.LA(1);

                         
                        int index53_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA53_19 = input.LA(1);

                         
                        int index53_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA53_20 = input.LA(1);

                         
                        int index53_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA53_21 = input.LA(1);

                         
                        int index53_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred63_Java()) ) {s = 28;}

                        else if ( (synpred64_Java()) ) {s = 22;}

                         
                        input.seek(index53_21);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 53, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA74_eotS =
        "\17\uffff";
    static final String DFA74_eofS =
        "\17\uffff";
    static final String DFA74_minS =
        "\1\4\13\0\3\uffff";
    static final String DFA74_maxS =
        "\1\157\13\0\3\uffff";
    static final String DFA74_acceptS =
        "\14\uffff\1\1\1\2\1\3";
    static final String DFA74_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\3\uffff}>";
    static final String[] DFA74_transitionS = {
            "\1\3\2\uffff\1\4\1\uffff\1\6\2\uffff\1\5\5\uffff\1\13\3\uffff"+
            "\1\1\1\uffff\1\12\6\uffff\1\10\1\uffff\1\11\7\uffff\1\7\105"+
            "\uffff\1\2",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            ""
    };

    static final short[] DFA74_eot = DFA.unpackEncodedString(DFA74_eotS);
    static final short[] DFA74_eof = DFA.unpackEncodedString(DFA74_eofS);
    static final char[] DFA74_min = DFA.unpackEncodedStringToUnsignedChars(DFA74_minS);
    static final char[] DFA74_max = DFA.unpackEncodedStringToUnsignedChars(DFA74_maxS);
    static final short[] DFA74_accept = DFA.unpackEncodedString(DFA74_acceptS);
    static final short[] DFA74_special = DFA.unpackEncodedString(DFA74_specialS);
    static final short[][] DFA74_transition;

    static {
        int numStates = DFA74_transitionS.length;
        DFA74_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA74_transition[i] = DFA.unpackEncodedString(DFA74_transitionS[i]);
        }
    }

    class DFA74 extends DFA {

        public DFA74(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 74;
            this.eot = DFA74_eot;
            this.eof = DFA74_eof;
            this.min = DFA74_min;
            this.max = DFA74_max;
            this.accept = DFA74_accept;
            this.special = DFA74_special;
            this.transition = DFA74_transition;
        }
        public String getDescription() {
            return "1883:1: formalParameterDecls returns [com.sun.tools.javac.util.List<JCVariableDecl> list] : (el1= ellipsisParameterDecl | no1= normalParameterDecl ( ',' no2= normalParameterDecl )* | (no3= normalParameterDecl ',' )+ el2= ellipsisParameterDecl );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA74_1 = input.LA(1);

                         
                        int index74_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA74_2 = input.LA(1);

                         
                        int index74_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA74_3 = input.LA(1);

                         
                        int index74_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA74_4 = input.LA(1);

                         
                        int index74_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA74_5 = input.LA(1);

                         
                        int index74_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA74_6 = input.LA(1);

                         
                        int index74_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA74_7 = input.LA(1);

                         
                        int index74_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA74_8 = input.LA(1);

                         
                        int index74_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA74_9 = input.LA(1);

                         
                        int index74_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA74_10 = input.LA(1);

                         
                        int index74_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA74_11 = input.LA(1);

                         
                        int index74_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred91_Java()) ) {s = 12;}

                        else if ( (synpred93_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index74_11);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 74, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA73_eotS =
        "\16\uffff";
    static final String DFA73_eofS =
        "\16\uffff";
    static final String DFA73_minS =
        "\1\4\13\0\2\uffff";
    static final String DFA73_maxS =
        "\1\157\13\0\2\uffff";
    static final String DFA73_acceptS =
        "\14\uffff\1\1\1\2";
    static final String DFA73_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\2\uffff}>";
    static final String[] DFA73_transitionS = {
            "\1\3\2\uffff\1\4\1\uffff\1\6\2\uffff\1\5\5\uffff\1\13\3\uffff"+
            "\1\1\1\uffff\1\12\6\uffff\1\10\1\uffff\1\11\7\uffff\1\7\105"+
            "\uffff\1\2",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };

    static final short[] DFA73_eot = DFA.unpackEncodedString(DFA73_eotS);
    static final short[] DFA73_eof = DFA.unpackEncodedString(DFA73_eofS);
    static final char[] DFA73_min = DFA.unpackEncodedStringToUnsignedChars(DFA73_minS);
    static final char[] DFA73_max = DFA.unpackEncodedStringToUnsignedChars(DFA73_maxS);
    static final short[] DFA73_accept = DFA.unpackEncodedString(DFA73_acceptS);
    static final short[] DFA73_special = DFA.unpackEncodedString(DFA73_specialS);
    static final short[][] DFA73_transition;

    static {
        int numStates = DFA73_transitionS.length;
        DFA73_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA73_transition[i] = DFA.unpackEncodedString(DFA73_transitionS[i]);
        }
    }

    class DFA73 extends DFA {

        public DFA73(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 73;
            this.eot = DFA73_eot;
            this.eof = DFA73_eof;
            this.min = DFA73_min;
            this.max = DFA73_max;
            this.accept = DFA73_accept;
            this.special = DFA73_special;
            this.transition = DFA73_transition;
        }
        public String getDescription() {
            return "()+ loopback of 1903:9: (no3= normalParameterDecl ',' )+";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA73_1 = input.LA(1);

                         
                        int index73_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA73_2 = input.LA(1);

                         
                        int index73_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA73_3 = input.LA(1);

                         
                        int index73_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA73_4 = input.LA(1);

                         
                        int index73_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA73_5 = input.LA(1);

                         
                        int index73_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA73_6 = input.LA(1);

                         
                        int index73_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA73_7 = input.LA(1);

                         
                        int index73_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA73_8 = input.LA(1);

                         
                        int index73_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA73_9 = input.LA(1);

                         
                        int index73_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA73_10 = input.LA(1);

                         
                        int index73_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA73_11 = input.LA(1);

                         
                        int index73_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred94_Java()) ) {s = 12;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index73_11);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 73, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA79_eotS =
        "\31\uffff";
    static final String DFA79_eofS =
        "\31\uffff";
    static final String DFA79_minS =
        "\1\4\1\uffff\2\0\25\uffff";
    static final String DFA79_maxS =
        "\1\114\1\uffff\2\0\25\uffff";
    static final String DFA79_acceptS =
        "\1\uffff\1\1\2\uffff\1\2\24\uffff";
    static final String DFA79_specialS =
        "\2\uffff\1\0\1\1\25\uffff}>";
    static final String[] DFA79_transitionS = {
            "\1\4\2\uffff\1\4\1\uffff\1\4\2\uffff\1\4\5\uffff\1\4\5\uffff"+
            "\1\4\6\uffff\1\4\1\uffff\1\4\1\uffff\1\4\5\uffff\1\4\2\uffff"+
            "\1\3\2\uffff\1\2\4\uffff\1\4\2\uffff\12\4\13\uffff\1\1",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA79_eot = DFA.unpackEncodedString(DFA79_eotS);
    static final short[] DFA79_eof = DFA.unpackEncodedString(DFA79_eofS);
    static final char[] DFA79_min = DFA.unpackEncodedStringToUnsignedChars(DFA79_minS);
    static final char[] DFA79_max = DFA.unpackEncodedStringToUnsignedChars(DFA79_maxS);
    static final short[] DFA79_accept = DFA.unpackEncodedString(DFA79_acceptS);
    static final short[] DFA79_special = DFA.unpackEncodedString(DFA79_specialS);
    static final short[][] DFA79_transition;

    static {
        int numStates = DFA79_transitionS.length;
        DFA79_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA79_transition[i] = DFA.unpackEncodedString(DFA79_transitionS[i]);
        }
    }

    class DFA79 extends DFA {

        public DFA79(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 79;
            this.eot = DFA79_eot;
            this.eof = DFA79_eof;
            this.min = DFA79_min;
            this.max = DFA79_max;
            this.accept = DFA79_accept;
            this.special = DFA79_special;
            this.transition = DFA79_transition;
        }
        public String getDescription() {
            return "1976:1: explicitConstructorInvocation returns [JCStatement tree] : ( (nw= nonWildcardTypeArguments )? (ths= 'this' | sup= 'super' ) ag1= arguments ';' | pr= primary dt2= '.' (nw2= nonWildcardTypeArguments )? sup2= 'super' ag2= arguments ';' );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA79_2 = input.LA(1);

                         
                        int index79_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred98_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index79_2);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA79_3 = input.LA(1);

                         
                        int index79_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred98_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index79_3);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 79, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA90_eotS =
        "\35\uffff";
    static final String DFA90_eofS =
        "\35\uffff";
    static final String DFA90_minS =
        "\1\4\25\0\7\uffff";
    static final String DFA90_maxS =
        "\1\157\25\0\7\uffff";
    static final String DFA90_acceptS =
        "\26\uffff\1\3\1\4\1\5\1\7\1\1\1\2\1\6";
    static final String DFA90_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\7\uffff}>";
    static final String[] DFA90_transitionS = {
            "\1\15\1\6\1\uffff\1\16\1\uffff\1\20\2\uffff\1\17\1\26\4\uffff"+
            "\1\25\1\uffff\1\30\1\uffff\1\7\1\uffff\1\24\6\uffff\1\22\1\27"+
            "\1\23\1\10\2\uffff\1\4\1\3\1\2\1\uffff\1\21\1\5\1\14\2\uffff"+
            "\1\11\3\uffff\1\12\2\uffff\1\13\20\uffff\1\31\50\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA90_eot = DFA.unpackEncodedString(DFA90_eotS);
    static final short[] DFA90_eof = DFA.unpackEncodedString(DFA90_eofS);
    static final char[] DFA90_min = DFA.unpackEncodedStringToUnsignedChars(DFA90_minS);
    static final char[] DFA90_max = DFA.unpackEncodedStringToUnsignedChars(DFA90_maxS);
    static final short[] DFA90_accept = DFA.unpackEncodedString(DFA90_acceptS);
    static final short[] DFA90_special = DFA.unpackEncodedString(DFA90_specialS);
    static final short[][] DFA90_transition;

    static {
        int numStates = DFA90_transitionS.length;
        DFA90_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA90_transition[i] = DFA.unpackEncodedString(DFA90_transitionS[i]);
        }
    }

    class DFA90 extends DFA {

        public DFA90(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 90;
            this.eot = DFA90_eot;
            this.eof = DFA90_eof;
            this.min = DFA90_min;
            this.max = DFA90_max;
            this.accept = DFA90_accept;
            this.special = DFA90_special;
            this.transition = DFA90_transition;
        }
        public String getDescription() {
            return "2221:1: annotationTypeElementDeclaration returns [com.sun.tools.javac.util.List<JCTree> list] : ( annotationMethodDeclaration | interfaceFieldDeclaration | normalClassDeclaration | normalInterfaceDeclaration | enumDeclaration | annotationTypeDeclaration | ';' );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA90_1 = input.LA(1);

                         
                        int index90_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred112_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 26;}

                        else if ( ((synpred113_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 27;}

                        else if ( ((synpred114_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 22;}

                        else if ( ((synpred115_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 23;}

                        else if ( ((synpred116_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 24;}

                        else if ( ((synpred117_Java()||(synpred117_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 28;}

                         
                        input.seek(index90_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA90_2 = input.LA(1);

                         
                        int index90_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA90_3 = input.LA(1);

                         
                        int index90_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA90_4 = input.LA(1);

                         
                        int index90_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA90_5 = input.LA(1);

                         
                        int index90_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA90_6 = input.LA(1);

                         
                        int index90_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA90_7 = input.LA(1);

                         
                        int index90_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA90_8 = input.LA(1);

                         
                        int index90_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA90_9 = input.LA(1);

                         
                        int index90_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA90_10 = input.LA(1);

                         
                        int index90_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA90_11 = input.LA(1);

                         
                        int index90_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA90_12 = input.LA(1);

                         
                        int index90_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( (synpred114_Java()) ) {s = 22;}

                        else if ( (synpred115_Java()) ) {s = 23;}

                        else if ( (synpred116_Java()) ) {s = 24;}

                        else if ( (synpred117_Java()) ) {s = 28;}

                         
                        input.seek(index90_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA90_13 = input.LA(1);

                         
                        int index90_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                        else if ( ((synpred116_Java()&&(source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) ) {s = 24;}

                         
                        input.seek(index90_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA90_14 = input.LA(1);

                         
                        int index90_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA90_15 = input.LA(1);

                         
                        int index90_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA90_16 = input.LA(1);

                         
                        int index90_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA90_17 = input.LA(1);

                         
                        int index90_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA90_18 = input.LA(1);

                         
                        int index90_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA90_19 = input.LA(1);

                         
                        int index90_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA90_20 = input.LA(1);

                         
                        int index90_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA90_21 = input.LA(1);

                         
                        int index90_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred112_Java()) ) {s = 26;}

                        else if ( (synpred113_Java()) ) {s = 27;}

                         
                        input.seek(index90_21);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 90, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA94_eotS =
        "\73\uffff";
    static final String DFA94_eofS =
        "\73\uffff";
    static final String DFA94_minS =
        "\1\4\2\0\1\uffff\11\0\6\uffff\1\0\47\uffff";
    static final String DFA94_maxS =
        "\1\u00de\2\0\1\uffff\11\0\6\uffff\1\0\47\uffff";
    static final String DFA94_acceptS =
        "\3\uffff\1\1\11\uffff\6\2\1\uffff\6\2\1\3\40\uffff";
    static final String DFA94_specialS =
        "\1\0\1\1\1\2\1\uffff\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\6"+
        "\uffff\1\14\47\uffff}>";
    static final String[] DFA94_transitionS = {
            "\1\4\1\21\1\32\1\5\1\32\1\7\2\uffff\1\6\1\27\1\uffff\1\32\1"+
            "\uffff\1\32\1\14\1\uffff\1\30\1\uffff\1\1\1\uffff\1\13\1\32"+
            "\1\uffff\1\32\3\uffff\1\11\1\31\1\12\1\22\1\32\1\uffff\1\17"+
            "\1\16\1\15\1\32\1\10\1\20\1\26\2\32\1\23\2\32\1\uffff\1\24\2"+
            "\32\1\25\13\32\1\uffff\1\32\3\uffff\1\32\6\uffff\2\32\10\uffff"+
            "\4\32\24\uffff\1\2\156\uffff\1\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA94_eot = DFA.unpackEncodedString(DFA94_eotS);
    static final short[] DFA94_eof = DFA.unpackEncodedString(DFA94_eofS);
    static final char[] DFA94_min = DFA.unpackEncodedStringToUnsignedChars(DFA94_minS);
    static final char[] DFA94_max = DFA.unpackEncodedStringToUnsignedChars(DFA94_maxS);
    static final short[] DFA94_accept = DFA.unpackEncodedString(DFA94_acceptS);
    static final short[] DFA94_special = DFA.unpackEncodedString(DFA94_specialS);
    static final short[][] DFA94_transition;

    static {
        int numStates = DFA94_transitionS.length;
        DFA94_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA94_transition[i] = DFA.unpackEncodedString(DFA94_transitionS[i]);
        }
    }

    class DFA94 extends DFA {

        public DFA94(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 94;
            this.eot = DFA94_eot;
            this.eof = DFA94_eof;
            this.min = DFA94_min;
            this.max = DFA94_max;
            this.accept = DFA94_accept;
            this.special = DFA94_special;
            this.transition = DFA94_transition;
        }
        public String getDescription() {
            return "2343:1: blockStatement returns [JCStatement tree, com.sun.tools.javac.util.List<JCStatement> list] : ( ( localVariableHeader )=> localVariableDeclarationStatement | ( typeHeader )=> classOrInterfaceDeclaration | statement );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA94_0 = input.LA(1);

                         
                        int index94_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA94_0==FINAL) ) {s = 1;}

                        else if ( (LA94_0==MONKEYS_AT) ) {s = 2;}

                        else if ( (LA94_0==VAR) && (synpred121_Java())) {s = 3;}

                        else if ( (LA94_0==IDENTIFIER) ) {s = 4;}

                        else if ( (LA94_0==BOOLEAN) ) {s = 5;}

                        else if ( (LA94_0==CHAR) ) {s = 6;}

                        else if ( (LA94_0==BYTE) ) {s = 7;}

                        else if ( (LA94_0==SHORT) ) {s = 8;}

                        else if ( (LA94_0==INT) ) {s = 9;}

                        else if ( (LA94_0==LONG) ) {s = 10;}

                        else if ( (LA94_0==FLOAT) ) {s = 11;}

                        else if ( (LA94_0==DOUBLE) ) {s = 12;}

                        else if ( (LA94_0==PUBLIC) && (synpred122_Java())) {s = 13;}

                        else if ( (LA94_0==PROTECTED) && (synpred122_Java())) {s = 14;}

                        else if ( (LA94_0==PRIVATE) && (synpred122_Java())) {s = 15;}

                        else if ( (LA94_0==STATIC) && (synpred122_Java())) {s = 16;}

                        else if ( (LA94_0==ABSTRACT) && (synpred122_Java())) {s = 17;}

                        else if ( (LA94_0==NATIVE) && (synpred122_Java())) {s = 18;}

                        else if ( (LA94_0==SYNCHRONIZED) ) {s = 19;}

                        else if ( (LA94_0==TRANSIENT) && (synpred122_Java())) {s = 20;}

                        else if ( (LA94_0==VOLATILE) && (synpred122_Java())) {s = 21;}

                        else if ( (LA94_0==STRICTFP) && (synpred122_Java())) {s = 22;}

                        else if ( (LA94_0==CLASS) && (synpred122_Java())) {s = 23;}

                        else if ( (LA94_0==ENUM) && (synpred122_Java())) {s = 24;}

                        else if ( (LA94_0==INTERFACE) && (synpred122_Java())) {s = 25;}

                        else if ( (LA94_0==ASSERT||LA94_0==BREAK||LA94_0==CONTINUE||LA94_0==DO||LA94_0==FOR||LA94_0==IF||LA94_0==NEW||LA94_0==RETURN||(LA94_0>=SUPER && LA94_0<=SWITCH)||(LA94_0>=THIS && LA94_0<=THROW)||(LA94_0>=TRY && LA94_0<=VOID)||(LA94_0>=WHILE && LA94_0<=LPAREN)||LA94_0==LBRACE||LA94_0==SEMI||(LA94_0>=BANG && LA94_0<=TILDE)||(LA94_0>=PLUSPLUS && LA94_0<=SUB)) ) {s = 26;}

                         
                        input.seek(index94_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA94_1 = input.LA(1);

                         
                        int index94_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (synpred122_Java()) ) {s = 25;}

                         
                        input.seek(index94_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA94_2 = input.LA(1);

                         
                        int index94_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (((synpred122_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred122_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||(synpred122_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))||synpred122_Java()||(synpred122_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)))) ) {s = 25;}

                         
                        input.seek(index94_2);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA94_4 = input.LA(1);

                         
                        int index94_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( ((synpred122_Java()&&(source.allowEnums()==false&&input.LT(1).getText().equals("enum")))) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA94_5 = input.LA(1);

                         
                        int index94_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA94_6 = input.LA(1);

                         
                        int index94_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA94_7 = input.LA(1);

                         
                        int index94_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA94_8 = input.LA(1);

                         
                        int index94_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA94_9 = input.LA(1);

                         
                        int index94_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA94_10 = input.LA(1);

                         
                        int index94_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA94_11 = input.LA(1);

                         
                        int index94_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA94_12 = input.LA(1);

                         
                        int index94_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred121_Java()) ) {s = 3;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA94_19 = input.LA(1);

                         
                        int index94_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred122_Java()) ) {s = 25;}

                        else if ( (true) ) {s = 26;}

                         
                        input.seek(index94_19);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 94, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA103_eotS =
        "\55\uffff";
    static final String DFA103_eofS =
        "\55\uffff";
    static final String DFA103_minS =
        "\1\4\2\uffff\1\0\51\uffff";
    static final String DFA103_maxS =
        "\1\132\2\uffff\1\0\51\uffff";
    static final String DFA103_acceptS =
        "\1\uffff\1\1\1\2\1\uffff\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13"+
        "\1\14\1\15\1\16\33\uffff\1\20\1\17";
    static final String DFA103_specialS =
        "\3\uffff\1\0\51\uffff}>";
    static final String[] DFA103_transitionS = {
            "\1\3\1\uffff\1\2\1\17\1\15\1\17\2\uffff\1\17\2\uffff\1\16\1"+
            "\uffff\1\7\1\17\5\uffff\1\17\1\5\1\uffff\1\4\3\uffff\1\17\1"+
            "\uffff\1\17\1\uffff\1\17\4\uffff\1\13\1\17\2\uffff\1\17\1\11"+
            "\1\12\1\17\1\14\2\uffff\1\10\1\17\1\uffff\1\6\12\17\1\uffff"+
            "\1\1\3\uffff\1\53\6\uffff\2\17\10\uffff\4\17",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA103_eot = DFA.unpackEncodedString(DFA103_eotS);
    static final short[] DFA103_eof = DFA.unpackEncodedString(DFA103_eofS);
    static final char[] DFA103_min = DFA.unpackEncodedStringToUnsignedChars(DFA103_minS);
    static final char[] DFA103_max = DFA.unpackEncodedStringToUnsignedChars(DFA103_maxS);
    static final short[] DFA103_accept = DFA.unpackEncodedString(DFA103_acceptS);
    static final short[] DFA103_special = DFA.unpackEncodedString(DFA103_specialS);
    static final short[][] DFA103_transition;

    static {
        int numStates = DFA103_transitionS.length;
        DFA103_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA103_transition[i] = DFA.unpackEncodedString(DFA103_transitionS[i]);
        }
    }

    class DFA103 extends DFA {

        public DFA103(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 103;
            this.eot = DFA103_eot;
            this.eof = DFA103_eof;
            this.min = DFA103_min;
            this.max = DFA103_max;
            this.accept = DFA103_accept;
            this.special = DFA103_special;
            this.transition = DFA103_transition;
        }
        public String getDescription() {
            return "2425:1: statement returns [JCStatement tree] : (bl= block | (ass= 'assert' | {...}? =>asid= IDENTIFIER ) as1= expression ( ':' as2= expression )? sm1= ';' | ift= 'if' cond= parExpression thenpart= statement ( options {k=1; } : ( 'else' )=> 'else' elsepart= statement )? | fo= forstatement | whl= 'while' pe= parExpression ws= statement | doo= 'do' ds= statement 'while' de= parExpression sm2= ';' | tr= trystatement | swi= 'switch' sp= parExpression '{' sg= switchBlockStatementGroups rbr1= '}' | syn= 'synchronized' sp= parExpression sb= block | rtn= 'return' (rex= expression )? sm5= ';' | thw= 'throw' te= expression smw= ';' | brk= 'break' (id2= IDENTIFIER )? sm7= ';' | cnt= 'continue' (id3= IDENTIFIER )? sm8= ';' | ex3= expression sm3= ';' | id4= IDENTIFIER ':' st4= statement | smi= ';' );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA103_3 = input.LA(1);

                         
                        int index103_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred128_Java()&&(source.allowAsserts()==false&&input.LT(1).getText().equals("assert")))) ) {s = 2;}

                        else if ( (synpred144_Java()) ) {s = 15;}

                        else if ( (synpred145_Java()) ) {s = 44;}

                         
                        input.seek(index103_3);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 103, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA99_eotS =
        "\101\uffff";
    static final String DFA99_eofS =
        "\1\2\100\uffff";
    static final String DFA99_minS =
        "\1\4\1\0\77\uffff";
    static final String DFA99_maxS =
        "\1\u00de\1\0\77\uffff";
    static final String DFA99_acceptS =
        "\2\uffff\1\2\75\uffff\1\1";
    static final String DFA99_specialS =
        "\1\uffff\1\0\77\uffff}>";
    static final String[] DFA99_transitionS = {
            "\7\2\1\uffff\2\2\1\uffff\4\2\1\1\1\2\1\uffff\1\2\1\uffff\2"+
            "\2\1\uffff\1\2\3\uffff\5\2\1\uffff\14\2\1\uffff\17\2\1\uffff"+
            "\2\2\2\uffff\1\2\6\uffff\2\2\10\uffff\4\2\24\uffff\1\2\156\uffff"+
            "\1\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA99_eot = DFA.unpackEncodedString(DFA99_eotS);
    static final short[] DFA99_eof = DFA.unpackEncodedString(DFA99_eofS);
    static final char[] DFA99_min = DFA.unpackEncodedStringToUnsignedChars(DFA99_minS);
    static final char[] DFA99_max = DFA.unpackEncodedStringToUnsignedChars(DFA99_maxS);
    static final short[] DFA99_accept = DFA.unpackEncodedString(DFA99_acceptS);
    static final short[] DFA99_special = DFA.unpackEncodedString(DFA99_specialS);
    static final short[][] DFA99_transition;

    static {
        int numStates = DFA99_transitionS.length;
        DFA99_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA99_transition[i] = DFA.unpackEncodedString(DFA99_transitionS[i]);
        }
    }

    class DFA99 extends DFA {

        public DFA99(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 99;
            this.eot = DFA99_eot;
            this.eof = DFA99_eof;
            this.min = DFA99_min;
            this.max = DFA99_max;
            this.accept = DFA99_accept;
            this.special = DFA99_special;
            this.transition = DFA99_transition;
        }
        public String getDescription() {
            return "2453:56: ( options {k=1; } : ( 'else' )=> 'else' elsepart= statement )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA99_1 = input.LA(1);

                         
                        int index99_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred129_Java()) ) {s = 64;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index99_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 99, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA114_eotS =
        "\41\uffff";
    static final String DFA114_eofS =
        "\41\uffff";
    static final String DFA114_minS =
        "\1\4\3\uffff\11\0\24\uffff";
    static final String DFA114_maxS =
        "\1\u00de\3\uffff\11\0\24\uffff";
    static final String DFA114_acceptS =
        "\1\uffff\1\1\13\uffff\1\2\23\uffff";
    static final String DFA114_specialS =
        "\4\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\24\uffff}>";
    static final String[] DFA114_transitionS = {
            "\1\4\2\uffff\1\5\1\uffff\1\7\2\uffff\1\6\5\uffff\1\14\3\uffff"+
            "\1\1\1\uffff\1\13\6\uffff\1\11\1\uffff\1\12\1\uffff\1\15\5\uffff"+
            "\1\10\2\uffff\1\15\2\uffff\1\15\4\uffff\1\15\2\uffff\12\15\14"+
            "\uffff\2\15\10\uffff\4\15\24\uffff\1\1\156\uffff\1\1",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA114_eot = DFA.unpackEncodedString(DFA114_eotS);
    static final short[] DFA114_eof = DFA.unpackEncodedString(DFA114_eofS);
    static final char[] DFA114_min = DFA.unpackEncodedStringToUnsignedChars(DFA114_minS);
    static final char[] DFA114_max = DFA.unpackEncodedStringToUnsignedChars(DFA114_maxS);
    static final short[] DFA114_accept = DFA.unpackEncodedString(DFA114_acceptS);
    static final short[] DFA114_special = DFA.unpackEncodedString(DFA114_specialS);
    static final short[][] DFA114_transition;

    static {
        int numStates = DFA114_transitionS.length;
        DFA114_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA114_transition[i] = DFA.unpackEncodedString(DFA114_transitionS[i]);
        }
    }

    class DFA114 extends DFA {

        public DFA114(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 114;
            this.eot = DFA114_eot;
            this.eof = DFA114_eof;
            this.min = DFA114_min;
            this.max = DFA114_max;
            this.accept = DFA114_accept;
            this.special = DFA114_special;
            this.transition = DFA114_transition;
        }
        public String getDescription() {
            return "2759:1: forInit returns [com.sun.tools.javac.util.List<JCStatement> list] : ( localVariableDeclaration | expressionList );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA114_4 = input.LA(1);

                         
                        int index114_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_4);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA114_5 = input.LA(1);

                         
                        int index114_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_5);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA114_6 = input.LA(1);

                         
                        int index114_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_6);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA114_7 = input.LA(1);

                         
                        int index114_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_7);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA114_8 = input.LA(1);

                         
                        int index114_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_8);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA114_9 = input.LA(1);

                         
                        int index114_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_9);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA114_10 = input.LA(1);

                         
                        int index114_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_10);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA114_11 = input.LA(1);

                         
                        int index114_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_11);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA114_12 = input.LA(1);

                         
                        int index114_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred157_Java()) ) {s = 1;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index114_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 114, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA117_eotS =
        "\17\uffff";
    static final String DFA117_eofS =
        "\17\uffff";
    static final String DFA117_minS =
        "\1\112\12\uffff\1\113\1\112\2\uffff";
    static final String DFA117_maxS =
        "\1\153\12\uffff\2\113\2\uffff";
    static final String DFA117_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\2\uffff\1\13"+
        "\1\14";
    static final String DFA117_specialS =
        "\1\0\13\uffff\1\1\2\uffff}>";
    static final String[] DFA117_transitionS = {
            "\1\1\1\13\1\12\27\uffff\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\14",
            "\1\16\1\15",
            "",
            ""
    };

    static final short[] DFA117_eot = DFA.unpackEncodedString(DFA117_eotS);
    static final short[] DFA117_eof = DFA.unpackEncodedString(DFA117_eofS);
    static final char[] DFA117_min = DFA.unpackEncodedStringToUnsignedChars(DFA117_minS);
    static final char[] DFA117_max = DFA.unpackEncodedStringToUnsignedChars(DFA117_maxS);
    static final short[] DFA117_accept = DFA.unpackEncodedString(DFA117_acceptS);
    static final short[] DFA117_special = DFA.unpackEncodedString(DFA117_specialS);
    static final short[][] DFA117_transition;

    static {
        int numStates = DFA117_transitionS.length;
        DFA117_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA117_transition[i] = DFA.unpackEncodedString(DFA117_transitionS[i]);
        }
    }

    class DFA117 extends DFA {

        public DFA117(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 117;
            this.eot = DFA117_eot;
            this.eof = DFA117_eof;
            this.min = DFA117_min;
            this.max = DFA117_max;
            this.accept = DFA117_accept;
            this.special = DFA117_special;
            this.transition = DFA117_transition;
        }
        public String getDescription() {
            return "2833:1: assignmentOperator returns [int i] : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '=' | ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '=' | ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '=' );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA117_0 = input.LA(1);

                         
                        int index117_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA117_0==EQ) ) {s = 1;}

                        else if ( (LA117_0==PLUSEQ) ) {s = 2;}

                        else if ( (LA117_0==SUBEQ) ) {s = 3;}

                        else if ( (LA117_0==STAREQ) ) {s = 4;}

                        else if ( (LA117_0==SLASHEQ) ) {s = 5;}

                        else if ( (LA117_0==AMPEQ) ) {s = 6;}

                        else if ( (LA117_0==BAREQ) ) {s = 7;}

                        else if ( (LA117_0==CARETEQ) ) {s = 8;}

                        else if ( (LA117_0==PERCENTEQ) ) {s = 9;}

                        else if ( (LA117_0==LT) && (synpred169_Java())) {s = 10;}

                        else if ( (LA117_0==GT) ) {s = 11;}

                         
                        input.seek(index117_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA117_12 = input.LA(1);

                         
                        int index117_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA117_12==GT) && (synpred170_Java())) {s = 13;}

                        else if ( (LA117_12==EQ) && (synpred171_Java())) {s = 14;}

                         
                        input.seek(index117_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 117, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA130_eotS =
        "\42\uffff";
    static final String DFA130_eofS =
        "\42\uffff";
    static final String DFA130_minS =
        "\1\113\1\uffff\1\113\1\4\36\uffff";
    static final String DFA130_maxS =
        "\1\114\1\uffff\1\113\1\132\36\uffff";
    static final String DFA130_acceptS =
        "\1\uffff\1\1\2\uffff\1\2\35\3";
    static final String DFA130_specialS =
        "\1\0\2\uffff\1\1\36\uffff}>";
    static final String[] DFA130_transitionS = {
            "\1\2\1\1",
            "",
            "\1\3",
            "\1\15\2\uffff\1\31\1\uffff\1\33\2\uffff\1\32\5\uffff\1\40"+
            "\5\uffff\1\37\6\uffff\1\35\1\uffff\1\36\1\uffff\1\30\5\uffff"+
            "\1\34\2\uffff\1\16\2\uffff\1\14\4\uffff\1\41\2\uffff\1\17\1"+
            "\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\13\12\uffff\1\4\1\uffff"+
            "\1\12\1\11\10\uffff\1\7\1\10\1\5\1\6",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA130_eot = DFA.unpackEncodedString(DFA130_eotS);
    static final short[] DFA130_eof = DFA.unpackEncodedString(DFA130_eofS);
    static final char[] DFA130_min = DFA.unpackEncodedStringToUnsignedChars(DFA130_minS);
    static final char[] DFA130_max = DFA.unpackEncodedStringToUnsignedChars(DFA130_maxS);
    static final short[] DFA130_accept = DFA.unpackEncodedString(DFA130_acceptS);
    static final short[] DFA130_special = DFA.unpackEncodedString(DFA130_specialS);
    static final short[][] DFA130_transition;

    static {
        int numStates = DFA130_transitionS.length;
        DFA130_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA130_transition[i] = DFA.unpackEncodedString(DFA130_transitionS[i]);
        }
    }

    class DFA130 extends DFA {

        public DFA130(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 130;
            this.eot = DFA130_eot;
            this.eof = DFA130_eof;
            this.min = DFA130_min;
            this.max = DFA130_max;
            this.accept = DFA130_accept;
            this.special = DFA130_special;
            this.transition = DFA130_transition;
        }
        public String getDescription() {
            return "3141:1: shiftOp returns [int i] : ( ( '<' '<' )=>t1= '<' t2= '<' | ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' | ( '>' '>' )=>t1= '>' t2= '>' );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA130_0 = input.LA(1);

                         
                        int index130_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA130_0==LT) && (synpred186_Java())) {s = 1;}

                        else if ( (LA130_0==GT) ) {s = 2;}

                         
                        input.seek(index130_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA130_3 = input.LA(1);

                         
                        int index130_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA130_3==GT) && (synpred187_Java())) {s = 4;}

                        else if ( (LA130_3==PLUS) && (synpred188_Java())) {s = 5;}

                        else if ( (LA130_3==SUB) && (synpred188_Java())) {s = 6;}

                        else if ( (LA130_3==PLUSPLUS) && (synpred188_Java())) {s = 7;}

                        else if ( (LA130_3==SUBSUB) && (synpred188_Java())) {s = 8;}

                        else if ( (LA130_3==TILDE) && (synpred188_Java())) {s = 9;}

                        else if ( (LA130_3==BANG) && (synpred188_Java())) {s = 10;}

                        else if ( (LA130_3==LPAREN) && (synpred188_Java())) {s = 11;}

                        else if ( (LA130_3==THIS) && (synpred188_Java())) {s = 12;}

                        else if ( (LA130_3==IDENTIFIER) && (synpred188_Java())) {s = 13;}

                        else if ( (LA130_3==SUPER) && (synpred188_Java())) {s = 14;}

                        else if ( (LA130_3==INTLITERAL) && (synpred188_Java())) {s = 15;}

                        else if ( (LA130_3==LONGLITERAL) && (synpred188_Java())) {s = 16;}

                        else if ( (LA130_3==FLOATLITERAL) && (synpred188_Java())) {s = 17;}

                        else if ( (LA130_3==DOUBLELITERAL) && (synpred188_Java())) {s = 18;}

                        else if ( (LA130_3==CHARLITERAL) && (synpred188_Java())) {s = 19;}

                        else if ( (LA130_3==STRINGLITERAL) && (synpred188_Java())) {s = 20;}

                        else if ( (LA130_3==TRUE) && (synpred188_Java())) {s = 21;}

                        else if ( (LA130_3==FALSE) && (synpred188_Java())) {s = 22;}

                        else if ( (LA130_3==NULL) && (synpred188_Java())) {s = 23;}

                        else if ( (LA130_3==NEW) && (synpred188_Java())) {s = 24;}

                        else if ( (LA130_3==BOOLEAN) && (synpred188_Java())) {s = 25;}

                        else if ( (LA130_3==CHAR) && (synpred188_Java())) {s = 26;}

                        else if ( (LA130_3==BYTE) && (synpred188_Java())) {s = 27;}

                        else if ( (LA130_3==SHORT) && (synpred188_Java())) {s = 28;}

                        else if ( (LA130_3==INT) && (synpred188_Java())) {s = 29;}

                        else if ( (LA130_3==LONG) && (synpred188_Java())) {s = 30;}

                        else if ( (LA130_3==FLOAT) && (synpred188_Java())) {s = 31;}

                        else if ( (LA130_3==DOUBLE) && (synpred188_Java())) {s = 32;}

                        else if ( (LA130_3==VOID) && (synpred188_Java())) {s = 33;}

                         
                        input.seek(index130_3);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 130, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA135_eotS =
        "\13\uffff";
    static final String DFA135_eofS =
        "\13\uffff";
    static final String DFA135_minS =
        "\1\4\1\uffff\1\4\3\uffff\2\0\3\uffff";
    static final String DFA135_maxS =
        "\1\132\1\uffff\1\132\3\uffff\2\0\3\uffff";
    static final String DFA135_acceptS =
        "\1\uffff\1\1\1\uffff\1\5\1\6\1\7\2\uffff\1\4\1\2\1\3";
    static final String DFA135_specialS =
        "\6\uffff\1\0\1\1\3\uffff}>";
    static final String[] DFA135_transitionS = {
            "\1\5\2\uffff\1\5\1\uffff\1\5\2\uffff\1\5\5\uffff\1\5\5\uffff"+
            "\1\5\6\uffff\1\5\1\uffff\1\5\1\uffff\1\5\5\uffff\1\5\2\uffff"+
            "\1\5\2\uffff\1\5\4\uffff\1\5\2\uffff\12\5\14\uffff\2\5\10\uffff"+
            "\1\3\1\4\1\1\1\2",
            "",
            "\1\10\2\uffff\1\10\1\uffff\1\10\2\uffff\1\10\5\uffff\1\10"+
            "\5\uffff\1\10\6\uffff\1\10\1\uffff\1\10\1\uffff\1\10\5\uffff"+
            "\1\10\2\uffff\1\10\2\uffff\1\10\4\uffff\1\10\2\uffff\1\6\1\7"+
            "\10\10\14\uffff\2\10\10\uffff\4\10",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            ""
    };

    static final short[] DFA135_eot = DFA.unpackEncodedString(DFA135_eotS);
    static final short[] DFA135_eof = DFA.unpackEncodedString(DFA135_eofS);
    static final char[] DFA135_min = DFA.unpackEncodedStringToUnsignedChars(DFA135_minS);
    static final char[] DFA135_max = DFA.unpackEncodedStringToUnsignedChars(DFA135_maxS);
    static final short[] DFA135_accept = DFA.unpackEncodedString(DFA135_acceptS);
    static final short[] DFA135_special = DFA.unpackEncodedString(DFA135_specialS);
    static final short[][] DFA135_transition;

    static {
        int numStates = DFA135_transitionS.length;
        DFA135_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA135_transition[i] = DFA.unpackEncodedString(DFA135_transitionS[i]);
        }
    }

    class DFA135 extends DFA {

        public DFA135(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 135;
            this.eot = DFA135_eot;
            this.eof = DFA135_eof;
            this.min = DFA135_min;
            this.max = DFA135_max;
            this.accept = DFA135_accept;
            this.special = DFA135_special;
            this.transition = DFA135_transition;
        }
        public String getDescription() {
            return "3261:1: unaryExpression returns [JCExpression tree] : ( '+' un1= unaryExpression | '-' INTLITERAL | '-' LONGLITERAL | '-' un2= unaryExpression | '++' un3= unaryExpression | '--' un4= unaryExpression | unaryExpressionNotPlusMinus );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA135_6 = input.LA(1);

                         
                        int index135_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred195_Java()) ) {s = 9;}

                        else if ( (synpred197_Java()) ) {s = 8;}

                         
                        input.seek(index135_6);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA135_7 = input.LA(1);

                         
                        int index135_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred196_Java()) ) {s = 10;}

                        else if ( (synpred197_Java()) ) {s = 8;}

                         
                        input.seek(index135_7);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 135, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA138_eotS =
        "\33\uffff";
    static final String DFA138_eofS =
        "\33\uffff";
    static final String DFA138_minS =
        "\1\4\2\uffff\1\0\27\uffff";
    static final String DFA138_maxS =
        "\1\116\2\uffff\1\0\27\uffff";
    static final String DFA138_acceptS =
        "\1\uffff\1\1\1\2\1\uffff\1\4\25\uffff\1\3";
    static final String DFA138_specialS =
        "\3\uffff\1\0\27\uffff}>";
    static final String[] DFA138_transitionS = {
            "\1\4\2\uffff\1\4\1\uffff\1\4\2\uffff\1\4\5\uffff\1\4\5\uffff"+
            "\1\4\6\uffff\1\4\1\uffff\1\4\1\uffff\1\4\5\uffff\1\4\2\uffff"+
            "\1\4\2\uffff\1\4\4\uffff\1\4\2\uffff\11\4\1\3\14\uffff\1\2\1"+
            "\1",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA138_eot = DFA.unpackEncodedString(DFA138_eotS);
    static final short[] DFA138_eof = DFA.unpackEncodedString(DFA138_eofS);
    static final char[] DFA138_min = DFA.unpackEncodedStringToUnsignedChars(DFA138_minS);
    static final char[] DFA138_max = DFA.unpackEncodedStringToUnsignedChars(DFA138_maxS);
    static final short[] DFA138_accept = DFA.unpackEncodedString(DFA138_acceptS);
    static final short[] DFA138_special = DFA.unpackEncodedString(DFA138_specialS);
    static final short[][] DFA138_transition;

    static {
        int numStates = DFA138_transitionS.length;
        DFA138_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA138_transition[i] = DFA.unpackEncodedString(DFA138_transitionS[i]);
        }
    }

    class DFA138 extends DFA {

        public DFA138(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 138;
            this.eot = DFA138_eot;
            this.eof = DFA138_eof;
            this.min = DFA138_min;
            this.max = DFA138_max;
            this.accept = DFA138_accept;
            this.special = DFA138_special;
            this.transition = DFA138_transition;
        }
        public String getDescription() {
            return "3299:1: unaryExpressionNotPlusMinus returns [JCExpression tree] : ( '~' un1= unaryExpression | '!' un2= unaryExpression | ca= castExpression | pr= primary (se= selector[expr] )* (pp= '++' | mm= '--' )? );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA138_3 = input.LA(1);

                         
                        int index138_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred202_Java()) ) {s = 26;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index138_3);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 138, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA141_eotS =
        "\46\uffff";
    static final String DFA141_eofS =
        "\1\4\45\uffff";
    static final String DFA141_minS =
        "\1\36\1\0\1\uffff\1\0\42\uffff";
    static final String DFA141_maxS =
        "\1\153\1\0\1\uffff\1\0\42\uffff";
    static final String DFA141_acceptS =
        "\2\uffff\1\1\1\uffff\1\2\41\uffff";
    static final String DFA141_specialS =
        "\1\uffff\1\0\1\uffff\1\1\42\uffff}>";
    static final String[] DFA141_transitionS = {
            "\1\4\41\uffff\1\2\1\4\1\uffff\1\4\1\1\3\4\1\3\1\uffff\3\4\2"+
            "\uffff\3\4\2\uffff\15\4\3\uffff\10\4",
            "\1\uffff",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA141_eot = DFA.unpackEncodedString(DFA141_eotS);
    static final short[] DFA141_eof = DFA.unpackEncodedString(DFA141_eofS);
    static final char[] DFA141_min = DFA.unpackEncodedStringToUnsignedChars(DFA141_minS);
    static final char[] DFA141_max = DFA.unpackEncodedStringToUnsignedChars(DFA141_maxS);
    static final short[] DFA141_accept = DFA.unpackEncodedString(DFA141_acceptS);
    static final short[] DFA141_special = DFA.unpackEncodedString(DFA141_specialS);
    static final short[][] DFA141_transition;

    static {
        int numStates = DFA141_transitionS.length;
        DFA141_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA141_transition[i] = DFA.unpackEncodedString(DFA141_transitionS[i]);
        }
    }

    class DFA141 extends DFA {

        public DFA141(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 141;
            this.eot = DFA141_eot;
            this.eof = DFA141_eof;
            this.min = DFA141_min;
            this.max = DFA141_max;
            this.accept = DFA141_accept;
            this.special = DFA141_special;
            this.transition = DFA141_transition;
        }
        public String getDescription() {
            return "3395:9: (id2= identifierSuffix )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA141_1 = input.LA(1);

                         
                        int index141_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred209_Java()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index141_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA141_3 = input.LA(1);

                         
                        int index141_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred209_Java()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index141_3);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 141, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA143_eotS =
        "\46\uffff";
    static final String DFA143_eofS =
        "\1\4\45\uffff";
    static final String DFA143_minS =
        "\1\36\1\0\1\uffff\1\0\42\uffff";
    static final String DFA143_maxS =
        "\1\153\1\0\1\uffff\1\0\42\uffff";
    static final String DFA143_acceptS =
        "\2\uffff\1\1\1\uffff\1\2\41\uffff";
    static final String DFA143_specialS =
        "\1\uffff\1\0\1\uffff\1\1\42\uffff}>";
    static final String[] DFA143_transitionS = {
            "\1\4\41\uffff\1\2\1\4\1\uffff\1\4\1\1\3\4\1\3\1\uffff\3\4\2"+
            "\uffff\3\4\2\uffff\15\4\3\uffff\10\4",
            "\1\uffff",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA143_eot = DFA.unpackEncodedString(DFA143_eotS);
    static final short[] DFA143_eof = DFA.unpackEncodedString(DFA143_eofS);
    static final char[] DFA143_min = DFA.unpackEncodedStringToUnsignedChars(DFA143_minS);
    static final char[] DFA143_max = DFA.unpackEncodedStringToUnsignedChars(DFA143_maxS);
    static final short[] DFA143_accept = DFA.unpackEncodedString(DFA143_acceptS);
    static final short[] DFA143_special = DFA.unpackEncodedString(DFA143_specialS);
    static final short[][] DFA143_transition;

    static {
        int numStates = DFA143_transitionS.length;
        DFA143_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA143_transition[i] = DFA.unpackEncodedString(DFA143_transitionS[i]);
        }
    }

    class DFA143 extends DFA {

        public DFA143(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 143;
            this.eot = DFA143_eot;
            this.eof = DFA143_eof;
            this.min = DFA143_min;
            this.max = DFA143_max;
            this.accept = DFA143_accept;
            this.special = DFA143_special;
            this.transition = DFA143_transition;
        }
        public String getDescription() {
            return "3413:9: (id7= identifierSuffix )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA143_1 = input.LA(1);

                         
                        int index143_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred212_Java()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index143_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA143_3 = input.LA(1);

                         
                        int index143_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred212_Java()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index143_3);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 143, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA151_eotS =
        "\13\uffff";
    static final String DFA151_eofS =
        "\13\uffff";
    static final String DFA151_minS =
        "\1\100\1\4\1\uffff\1\15\7\uffff";
    static final String DFA151_maxS =
        "\1\110\1\132\1\uffff\1\114\7\uffff";
    static final String DFA151_acceptS =
        "\2\uffff\1\3\1\uffff\1\1\1\2\1\4\1\6\1\7\1\10\1\5";
    static final String DFA151_specialS =
        "\13\uffff}>";
    static final String[] DFA151_transitionS = {
            "\1\2\3\uffff\1\1\3\uffff\1\3",
            "\1\5\2\uffff\1\5\1\uffff\1\5\2\uffff\1\5\5\uffff\1\5\5\uffff"+
            "\1\5\6\uffff\1\5\1\uffff\1\5\1\uffff\1\5\5\uffff\1\5\2\uffff"+
            "\1\5\2\uffff\1\5\4\uffff\1\5\2\uffff\12\5\4\uffff\1\4\7\uffff"+
            "\2\5\10\uffff\4\5",
            "",
            "\1\6\25\uffff\1\11\10\uffff\1\10\2\uffff\1\7\34\uffff\1\12",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA151_eot = DFA.unpackEncodedString(DFA151_eotS);
    static final short[] DFA151_eof = DFA.unpackEncodedString(DFA151_eofS);
    static final char[] DFA151_min = DFA.unpackEncodedStringToUnsignedChars(DFA151_minS);
    static final char[] DFA151_max = DFA.unpackEncodedStringToUnsignedChars(DFA151_maxS);
    static final short[] DFA151_accept = DFA.unpackEncodedString(DFA151_acceptS);
    static final short[] DFA151_special = DFA.unpackEncodedString(DFA151_specialS);
    static final short[][] DFA151_transition;

    static {
        int numStates = DFA151_transitionS.length;
        DFA151_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA151_transition[i] = DFA.unpackEncodedString(DFA151_transitionS[i]);
        }
    }

    class DFA151 extends DFA {

        public DFA151(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 151;
            this.eot = DFA151_eot;
            this.eof = DFA151_eof;
            this.min = DFA151_min;
            this.max = DFA151_max;
            this.accept = DFA151_accept;
            this.special = DFA151_special;
            this.transition = DFA151_transition;
        }
        public String getDescription() {
            return "3513:1: identifierSuffix returns [JCExpression tree] : ( (lbr1= '[' rbr1= ']' )+ dt1= '.' cla1= 'class' | (lbr2= '[' exp= expression rbr2= ']' )+ | ag1= arguments | '.' cla2= 'class' | '.' nw= nonWildcardTypeArguments id= IDENTIFIER ags= arguments | '.' thi= 'this' | '.' sup1= 'super' ag2= arguments | in= innerCreator[expr] );";
        }
    }
    static final String DFA150_eotS =
        "\46\uffff";
    static final String DFA150_eofS =
        "\1\1\45\uffff";
    static final String DFA150_minS =
        "\1\36\1\uffff\1\0\43\uffff";
    static final String DFA150_maxS =
        "\1\153\1\uffff\1\0\43\uffff";
    static final String DFA150_acceptS =
        "\1\uffff\1\2\43\uffff\1\1";
    static final String DFA150_specialS =
        "\2\uffff\1\0\43\uffff}>";
    static final String[] DFA150_transitionS = {
            "\1\1\42\uffff\1\1\1\uffff\1\1\1\2\4\1\1\uffff\3\1\2\uffff\3"+
            "\1\2\uffff\15\1\3\uffff\10\1",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA150_eot = DFA.unpackEncodedString(DFA150_eotS);
    static final short[] DFA150_eof = DFA.unpackEncodedString(DFA150_eofS);
    static final char[] DFA150_min = DFA.unpackEncodedStringToUnsignedChars(DFA150_minS);
    static final char[] DFA150_max = DFA.unpackEncodedStringToUnsignedChars(DFA150_maxS);
    static final short[] DFA150_accept = DFA.unpackEncodedString(DFA150_acceptS);
    static final short[] DFA150_special = DFA.unpackEncodedString(DFA150_specialS);
    static final short[][] DFA150_transition;

    static {
        int numStates = DFA150_transitionS.length;
        DFA150_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA150_transition[i] = DFA.unpackEncodedString(DFA150_transitionS[i]);
        }
    }

    class DFA150 extends DFA {

        public DFA150(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 150;
            this.eot = DFA150_eot;
            this.eof = DFA150_eof;
            this.min = DFA150_min;
            this.max = DFA150_max;
            this.accept = DFA150_accept;
            this.special = DFA150_special;
            this.transition = DFA150_transition;
        }
        public String getDescription() {
            return "()+ loopback of 3542:9: (lbr2= '[' exp= expression rbr2= ']' )+";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA150_2 = input.LA(1);

                         
                        int index150_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred224_Java()) ) {s = 37;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index150_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 150, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA158_eotS =
        "\46\uffff";
    static final String DFA158_eofS =
        "\1\2\45\uffff";
    static final String DFA158_minS =
        "\1\36\1\0\44\uffff";
    static final String DFA158_maxS =
        "\1\153\1\0\44\uffff";
    static final String DFA158_acceptS =
        "\2\uffff\1\2\42\uffff\1\1";
    static final String DFA158_specialS =
        "\1\uffff\1\0\44\uffff}>";
    static final String[] DFA158_transitionS = {
            "\1\2\42\uffff\1\2\1\uffff\1\2\1\1\4\2\1\uffff\3\2\2\uffff\3"+
            "\2\2\uffff\15\2\3\uffff\10\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA158_eot = DFA.unpackEncodedString(DFA158_eotS);
    static final short[] DFA158_eof = DFA.unpackEncodedString(DFA158_eofS);
    static final char[] DFA158_min = DFA.unpackEncodedStringToUnsignedChars(DFA158_minS);
    static final char[] DFA158_max = DFA.unpackEncodedStringToUnsignedChars(DFA158_maxS);
    static final short[] DFA158_accept = DFA.unpackEncodedString(DFA158_acceptS);
    static final short[] DFA158_special = DFA.unpackEncodedString(DFA158_specialS);
    static final short[][] DFA158_transition;

    static {
        int numStates = DFA158_transitionS.length;
        DFA158_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA158_transition[i] = DFA.unpackEncodedString(DFA158_transitionS[i]);
        }
    }

    class DFA158 extends DFA {

        public DFA158(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 158;
            this.eot = DFA158_eot;
            this.eof = DFA158_eof;
            this.min = DFA158_min;
            this.max = DFA158_max;
            this.accept = DFA158_accept;
            this.special = DFA158_special;
            this.transition = DFA158_transition;
        }
        public String getDescription() {
            return "()* loopback of 3752:9: ( '[' ex2= expression ']' )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA158_1 = input.LA(1);

                         
                        int index158_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred243_Java()) ) {s = 37;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index158_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 158, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA180_eotS =
        "\17\uffff";
    static final String DFA180_eofS =
        "\17\uffff";
    static final String DFA180_minS =
        "\1\4\14\0\2\uffff";
    static final String DFA180_maxS =
        "\1\157\14\0\2\uffff";
    static final String DFA180_acceptS =
        "\15\uffff\1\1\1\2";
    static final String DFA180_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\2"+
        "\uffff}>";
    static final String[] DFA180_transitionS = {
            "\1\16\1\6\7\uffff\1\15\6\uffff\1\16\1\uffff\1\7\13\uffff\1"+
            "\10\2\uffff\1\4\1\3\1\2\2\uffff\1\5\1\14\2\uffff\1\11\3\uffff"+
            "\1\12\2\uffff\1\13\71\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };

    static final short[] DFA180_eot = DFA.unpackEncodedString(DFA180_eotS);
    static final short[] DFA180_eof = DFA.unpackEncodedString(DFA180_eofS);
    static final char[] DFA180_min = DFA.unpackEncodedStringToUnsignedChars(DFA180_minS);
    static final char[] DFA180_max = DFA.unpackEncodedStringToUnsignedChars(DFA180_maxS);
    static final short[] DFA180_accept = DFA.unpackEncodedString(DFA180_acceptS);
    static final short[] DFA180_special = DFA.unpackEncodedString(DFA180_specialS);
    static final short[][] DFA180_transition;

    static {
        int numStates = DFA180_transitionS.length;
        DFA180_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA180_transition[i] = DFA.unpackEncodedString(DFA180_transitionS[i]);
        }
    }

    class DFA180 extends DFA {

        public DFA180(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 180;
            this.eot = DFA180_eot;
            this.eof = DFA180_eof;
            this.min = DFA180_min;
            this.max = DFA180_max;
            this.accept = DFA180_accept;
            this.special = DFA180_special;
            this.transition = DFA180_transition;
        }
        public String getDescription() {
            return "724:9: synpred13_Java : ( classHeader | enumHeader );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA180_1 = input.LA(1);

                         
                        int index180_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred12_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 13;}

                        else if ( ((input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)) ) {s = 14;}

                         
                        input.seek(index180_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA180_2 = input.LA(1);

                         
                        int index180_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA180_3 = input.LA(1);

                         
                        int index180_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA180_4 = input.LA(1);

                         
                        int index180_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA180_5 = input.LA(1);

                         
                        int index180_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA180_6 = input.LA(1);

                         
                        int index180_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA180_7 = input.LA(1);

                         
                        int index180_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA180_8 = input.LA(1);

                         
                        int index180_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA180_9 = input.LA(1);

                         
                        int index180_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA180_10 = input.LA(1);

                         
                        int index180_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA180_11 = input.LA(1);

                         
                        int index180_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA180_12 = input.LA(1);

                         
                        int index180_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred12_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index180_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 180, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA181_eotS =
        "\17\uffff";
    static final String DFA181_eofS =
        "\17\uffff";
    static final String DFA181_minS =
        "\1\4\14\0\2\uffff";
    static final String DFA181_maxS =
        "\1\157\14\0\2\uffff";
    static final String DFA181_acceptS =
        "\15\uffff\1\1\1\2";
    static final String DFA181_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\2"+
        "\uffff}>";
    static final String[] DFA181_transitionS = {
            "\1\16\1\6\7\uffff\1\15\6\uffff\1\16\1\uffff\1\7\13\uffff\1"+
            "\10\2\uffff\1\4\1\3\1\2\2\uffff\1\5\1\14\2\uffff\1\11\3\uffff"+
            "\1\12\2\uffff\1\13\71\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };

    static final short[] DFA181_eot = DFA.unpackEncodedString(DFA181_eotS);
    static final short[] DFA181_eof = DFA.unpackEncodedString(DFA181_eofS);
    static final char[] DFA181_min = DFA.unpackEncodedStringToUnsignedChars(DFA181_minS);
    static final char[] DFA181_max = DFA.unpackEncodedStringToUnsignedChars(DFA181_maxS);
    static final short[] DFA181_accept = DFA.unpackEncodedString(DFA181_acceptS);
    static final short[] DFA181_special = DFA.unpackEncodedString(DFA181_specialS);
    static final short[][] DFA181_transition;

    static {
        int numStates = DFA181_transitionS.length;
        DFA181_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA181_transition[i] = DFA.unpackEncodedString(DFA181_transitionS[i]);
        }
    }

    class DFA181 extends DFA {

        public DFA181(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 181;
            this.eot = DFA181_eot;
            this.eof = DFA181_eof;
            this.min = DFA181_min;
            this.max = DFA181_max;
            this.accept = DFA181_accept;
            this.special = DFA181_special;
            this.transition = DFA181_transition;
        }
        public String getDescription() {
            return "1328:9: synpred46_Java : ( classHeader | enumHeader );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA181_1 = input.LA(1);

                         
                        int index181_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred45_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 13;}

                        else if ( ((input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE)) ) {s = 14;}

                         
                        input.seek(index181_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA181_2 = input.LA(1);

                         
                        int index181_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA181_3 = input.LA(1);

                         
                        int index181_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA181_4 = input.LA(1);

                         
                        int index181_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA181_5 = input.LA(1);

                         
                        int index181_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA181_6 = input.LA(1);

                         
                        int index181_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA181_7 = input.LA(1);

                         
                        int index181_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA181_8 = input.LA(1);

                         
                        int index181_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA181_9 = input.LA(1);

                         
                        int index181_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA181_10 = input.LA(1);

                         
                        int index181_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA181_11 = input.LA(1);

                         
                        int index181_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA181_12 = input.LA(1);

                         
                        int index181_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred45_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index181_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 181, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA182_eotS =
        "\17\uffff";
    static final String DFA182_eofS =
        "\17\uffff";
    static final String DFA182_minS =
        "\1\5\14\0\2\uffff";
    static final String DFA182_maxS =
        "\1\157\14\0\2\uffff";
    static final String DFA182_acceptS =
        "\15\uffff\1\1\1\2";
    static final String DFA182_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\2"+
        "\uffff}>";
    static final String[] DFA182_transitionS = {
            "\1\6\20\uffff\1\7\11\uffff\1\15\1\uffff\1\10\2\uffff\1\4\1"+
            "\3\1\2\2\uffff\1\5\1\14\2\uffff\1\11\3\uffff\1\12\2\uffff\1"+
            "\13\71\uffff\1\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };

    static final short[] DFA182_eot = DFA.unpackEncodedString(DFA182_eotS);
    static final short[] DFA182_eof = DFA.unpackEncodedString(DFA182_eofS);
    static final char[] DFA182_min = DFA.unpackEncodedStringToUnsignedChars(DFA182_minS);
    static final char[] DFA182_max = DFA.unpackEncodedStringToUnsignedChars(DFA182_maxS);
    static final short[] DFA182_accept = DFA.unpackEncodedString(DFA182_acceptS);
    static final short[] DFA182_special = DFA.unpackEncodedString(DFA182_specialS);
    static final short[][] DFA182_transition;

    static {
        int numStates = DFA182_transitionS.length;
        DFA182_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA182_transition[i] = DFA.unpackEncodedString(DFA182_transitionS[i]);
        }
    }

    class DFA182 extends DFA {

        public DFA182(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 182;
            this.eot = DFA182_eot;
            this.eof = DFA182_eof;
            this.min = DFA182_min;
            this.max = DFA182_max;
            this.accept = DFA182_accept;
            this.special = DFA182_special;
            this.transition = DFA182_transition;
        }
        public String getDescription() {
            return "1332:9: synpred48_Java : ( interfaceHeader | annotationHeader );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA182_1 = input.LA(1);

                         
                        int index182_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((synpred47_Java()&&(input.LA(1)==MONKEYS_AT && input.LA(2)!=INTERFACE))) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA182_2 = input.LA(1);

                         
                        int index182_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA182_3 = input.LA(1);

                         
                        int index182_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA182_4 = input.LA(1);

                         
                        int index182_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA182_5 = input.LA(1);

                         
                        int index182_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA182_6 = input.LA(1);

                         
                        int index182_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA182_7 = input.LA(1);

                         
                        int index182_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA182_8 = input.LA(1);

                         
                        int index182_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA182_9 = input.LA(1);

                         
                        int index182_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA182_10 = input.LA(1);

                         
                        int index182_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA182_11 = input.LA(1);

                         
                        int index182_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA182_12 = input.LA(1);

                         
                        int index182_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred47_Java()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index182_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 182, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_annotations_in_compilationUnit163 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_packageDeclaration_in_compilationUnit210 = new BitSet(new long[]{0x00244CE520502032L,0x0000800000000040L});
    public static final BitSet FOLLOW_importDeclaration_in_compilationUnit250 = new BitSet(new long[]{0x00244CE520502032L,0x0000800000000040L});
    public static final BitSet FOLLOW_typeDeclaration_in_compilationUnit286 = new BitSet(new long[]{0x00244CE500502032L,0x0000800000000040L});
    public static final BitSet FOLLOW_PACKAGE_in_packageDeclaration334 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_qualifiedName_in_packageDeclaration336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_packageDeclaration360 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IMPORT_in_importDeclaration410 = new BitSet(new long[]{0x0000040000000010L});
    public static final BitSet FOLLOW_STATIC_in_importDeclaration415 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_importDeclaration452 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_importDeclaration456 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
    public static final BitSet FOLLOW_STAR_in_importDeclaration460 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_importDeclaration484 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IMPORT_in_importDeclaration502 = new BitSet(new long[]{0x0000040000000010L});
    public static final BitSet FOLLOW_STATIC_in_importDeclaration507 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_importDeclaration544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_importDeclaration571 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_importDeclaration575 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000140L});
    public static final BitSet FOLLOW_DOT_in_importDeclaration613 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
    public static final BitSet FOLLOW_STAR_in_importDeclaration617 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_importDeclaration652 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedImportName703 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_qualifiedImportName728 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedImportName732 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_typeDeclaration806 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classDeclaration_in_classOrInterfaceDeclaration853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration877 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotation_in_modifiers967 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_PUBLIC_in_modifiers993 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_PROTECTED_in_modifiers1019 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_PRIVATE_in_modifiers1045 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_STATIC_in_modifiers1071 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_ABSTRACT_in_modifiers1097 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_FINAL_in_modifiers1123 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_NATIVE_in_modifiers1149 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_SYNCHRONIZED_in_modifiers1175 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_TRANSIENT_in_modifiers1201 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_VOLATILE_in_modifiers1227 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_STRICTFP_in_modifiers1253 = new BitSet(new long[]{0x00244CE400400022L,0x0000800000000000L});
    public static final BitSet FOLLOW_FINAL_in_variableModifiers1330 = new BitSet(new long[]{0x0000000000400002L,0x0000800000000000L});
    public static final BitSet FOLLOW_annotation_in_variableModifiers1364 = new BitSet(new long[]{0x0000000000400002L,0x0000800000000000L});
    public static final BitSet FOLLOW_normalClassDeclaration_in_classDeclaration1422 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumDeclaration_in_classDeclaration1446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_normalClassDeclaration1522 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_normalClassDeclaration1527 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_normalClassDeclaration1529 = new BitSet(new long[]{0x0000000010200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_typeParameters_in_normalClassDeclaration1554 = new BitSet(new long[]{0x0000000010200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_EXTENDS_in_normalClassDeclaration1590 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_normalClassDeclaration1592 = new BitSet(new long[]{0x0000000010200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_IMPLEMENTS_in_normalClassDeclaration1628 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_typeList_in_normalClassDeclaration1630 = new BitSet(new long[]{0x0000000010200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_classBody_in_normalClassDeclaration1677 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_typeParameters1742 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_typeParameter_in_typeParameters1772 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000880L});
    public static final BitSet FOLLOW_COMMA_in_typeParameters1805 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_typeParameter_in_typeParameters1809 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000880L});
    public static final BitSet FOLLOW_GT_in_typeParameters1852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_typeParameter1901 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_EXTENDS_in_typeParameter1926 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_typeBound_in_typeParameter1928 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_in_typeBound2004 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_AMP_in_typeBound2029 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_typeBound2033 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_modifiers_in_enumDeclaration2120 = new BitSet(new long[]{0x0000000000100010L});
    public static final BitSet FOLLOW_ENUM_in_enumDeclaration2138 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_enumDeclaration2158 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_enumDeclaration2200 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_IMPLEMENTS_in_enumDeclaration2225 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_typeList_in_enumDeclaration2227 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_enumBody_in_enumDeclaration2276 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACE_in_enumBody2339 = new BitSet(new long[]{0x0000000000000010L,0x00008000000000C8L});
    public static final BitSet FOLLOW_enumConstants_in_enumBody2341 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C8L});
    public static final BitSet FOLLOW_COMMA_in_enumBody2368 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000048L});
    public static final BitSet FOLLOW_enumBodyDeclarations_in_enumBody2372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_RBRACE_in_enumBody2399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumConstant_in_enumConstants2450 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_enumConstants2475 = new BitSet(new long[]{0x0000000000000010L,0x0000800000000000L});
    public static final BitSet FOLLOW_enumConstant_in_enumConstants2479 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_annotations_in_enumConstant2556 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_enumConstant2591 = new BitSet(new long[]{0x0000000010200002L,0x0000000000001005L});
    public static final BitSet FOLLOW_arguments_in_enumConstant2616 = new BitSet(new long[]{0x0000000010200002L,0x0000000000001004L});
    public static final BitSet FOLLOW_classBody_in_enumConstant2652 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_enumBodyDeclarations2736 = new BitSet(new long[]{0x00344EE7815432B2L,0x0000800000001044L});
    public static final BitSet FOLLOW_classBodyDeclaration_in_enumBodyDeclarations2739 = new BitSet(new long[]{0x00344EE7815432B2L,0x0000800000001044L});
    public static final BitSet FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration2791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration2819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_normalInterfaceDeclaration2895 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_INTERFACE_in_normalInterfaceDeclaration2899 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_normalInterfaceDeclaration2901 = new BitSet(new long[]{0x0000000000200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_typeParameters_in_normalInterfaceDeclaration2926 = new BitSet(new long[]{0x0000000000200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_EXTENDS_in_normalInterfaceDeclaration2962 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_typeList_in_normalInterfaceDeclaration2964 = new BitSet(new long[]{0x0000000000200000L,0x0000000000001004L});
    public static final BitSet FOLLOW_interfaceBody_in_normalInterfaceDeclaration3013 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_in_typeList3090 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_typeList3115 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_typeList3119 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_LBRACE_in_classBody3193 = new BitSet(new long[]{0x00344EE7815432B0L,0x000080000000104CL});
    public static final BitSet FOLLOW_classBodyDeclaration_in_classBody3196 = new BitSet(new long[]{0x00344EE7815432B0L,0x000080000000104CL});
    public static final BitSet FOLLOW_RBRACE_in_classBody3223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACE_in_interfaceBody3272 = new BitSet(new long[]{0x00344EE7815432B0L,0x0000800000001048L});
    public static final BitSet FOLLOW_interfaceBodyDeclaration_in_interfaceBody3275 = new BitSet(new long[]{0x00344EE7815432B0L,0x0000800000001048L});
    public static final BitSet FOLLOW_RBRACE_in_interfaceBody3302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_classBodyDeclaration3351 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_staticBlock_in_classBodyDeclaration3377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_in_classBodyDeclaration3403 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberDecl_in_classBodyDeclaration3429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_fieldDeclaration_in_memberDecl3499 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_methodDeclaration_in_memberDecl3529 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classDeclaration_in_memberDecl3563 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_memberDecl3597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_methodDeclaration3699 = new BitSet(new long[]{0x0000000000000010L,0x0000000000001000L});
    public static final BitSet FOLLOW_typeParameters_in_methodDeclaration3726 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodDeclaration3763 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_formalParameters_in_methodDeclaration3789 = new BitSet(new long[]{0x0002000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_THROWS_in_methodDeclaration3814 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_qualifiedNameList_in_methodDeclaration3818 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_LBRACE_in_methodDeclaration3869 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_explicitConstructorInvocation_in_methodDeclaration3883 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_blockStatement_in_methodDeclaration3925 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_RBRACE_in_methodDeclaration3962 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_methodDeclaration3988 = new BitSet(new long[]{0x0010020281041290L,0x0000000000001000L});
    public static final BitSet FOLLOW_typeParameters_in_methodDeclaration4015 = new BitSet(new long[]{0x0010020281041290L});
    public static final BitSet FOLLOW_type_in_methodDeclaration4053 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_VOID_in_methodDeclaration4083 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodDeclaration4123 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_formalParameters_in_methodDeclaration4149 = new BitSet(new long[]{0x0002000000000000L,0x0000000000000054L});
    public static final BitSet FOLLOW_LBRACKET_in_methodDeclaration4176 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_methodDeclaration4180 = new BitSet(new long[]{0x0002000000000000L,0x0000000000000054L});
    public static final BitSet FOLLOW_THROWS_in_methodDeclaration4216 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_qualifiedNameList_in_methodDeclaration4220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000044L});
    public static final BitSet FOLLOW_block_in_methodDeclaration4305 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_methodDeclaration4337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_fieldDeclaration4399 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_fieldDeclaration4425 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_fieldDeclaration4451 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
    public static final BitSet FOLLOW_COMMA_in_fieldDeclaration4478 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_fieldDeclaration4482 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
    public static final BitSet FOLLOW_SEMI_in_fieldDeclaration4517 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_variableDeclarator4555 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000410L});
    public static final BitSet FOLLOW_LBRACKET_in_variableDeclarator4582 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_variableDeclarator4586 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000410L});
    public static final BitSet FOLLOW_EQ_in_variableDeclarator4622 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807005L});
    public static final BitSet FOLLOW_variableInitializer_in_variableDeclarator4626 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFieldDeclaration_in_interfaceBodyDeclaration4708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceMethodDeclaration_in_interfaceBodyDeclaration4732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_interfaceBodyDeclaration4756 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classDeclaration_in_interfaceBodyDeclaration4780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_interfaceBodyDeclaration4804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_interfaceMethodDeclaration4867 = new BitSet(new long[]{0x0010020281041290L,0x0000000000001000L});
    public static final BitSet FOLLOW_typeParameters_in_interfaceMethodDeclaration4892 = new BitSet(new long[]{0x0010020281041290L});
    public static final BitSet FOLLOW_type_in_interfaceMethodDeclaration4928 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_VOID_in_interfaceMethodDeclaration4956 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_interfaceMethodDeclaration4990 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_formalParameters_in_interfaceMethodDeclaration5014 = new BitSet(new long[]{0x0002000000000000L,0x0000000000000050L});
    public static final BitSet FOLLOW_LBRACKET_in_interfaceMethodDeclaration5041 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_interfaceMethodDeclaration5045 = new BitSet(new long[]{0x0002000000000000L,0x0000000000000050L});
    public static final BitSet FOLLOW_THROWS_in_interfaceMethodDeclaration5081 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_qualifiedNameList_in_interfaceMethodDeclaration5085 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_interfaceMethodDeclaration5112 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_interfaceFieldDeclaration5163 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_interfaceFieldDeclaration5165 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_interfaceFieldDeclaration5169 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
    public static final BitSet FOLLOW_COMMA_in_interfaceFieldDeclaration5196 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_interfaceFieldDeclaration5200 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
    public static final BitSet FOLLOW_SEMI_in_interfaceFieldDeclaration5235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classOrInterfaceType_in_type5285 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_type5312 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_type5316 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_primitiveType_in_type5351 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_type5378 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_type5382 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_classOrInterfaceType5459 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001100L});
    public static final BitSet FOLLOW_typeArguments_in_classOrInterfaceType5486 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_classOrInterfaceType5524 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_classOrInterfaceType5528 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001100L});
    public static final BitSet FOLLOW_typeArguments_in_classOrInterfaceType5563 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_BOOLEAN_in_primitiveType5657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CHAR_in_primitiveType5681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BYTE_in_primitiveType5705 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SHORT_in_primitiveType5729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INT_in_primitiveType5753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LONG_in_primitiveType5777 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FLOAT_in_primitiveType5801 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOUBLE_in_primitiveType5825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_typeArguments5890 = new BitSet(new long[]{0x0000020281041290L,0x0000000000008000L});
    public static final BitSet FOLLOW_typeArgument_in_typeArguments5894 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000880L});
    public static final BitSet FOLLOW_COMMA_in_typeArguments5919 = new BitSet(new long[]{0x0000020281041290L,0x0000000000008000L});
    public static final BitSet FOLLOW_typeArgument_in_typeArguments5923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000880L});
    public static final BitSet FOLLOW_GT_in_typeArguments5950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_in_typeArgument6001 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_QUES_in_typeArgument6025 = new BitSet(new long[]{0x0000100000200002L});
    public static final BitSet FOLLOW_EXTENDS_in_typeArgument6053 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_SUPER_in_typeArgument6089 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_typeArgument6137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList6217 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_qualifiedNameList6242 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList6246 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_LPAREN_in_formalParameters6307 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000002L});
    public static final BitSet FOLLOW_formalParameterDecls_in_formalParameters6309 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_formalParameters6336 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ellipsisParameterDecl_in_formalParameterDecls6387 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_normalParameterDecl_in_formalParameterDecls6413 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_formalParameterDecls6438 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000000L});
    public static final BitSet FOLLOW_normalParameterDecl_in_formalParameterDecls6442 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_normalParameterDecl_in_formalParameterDecls6480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_formalParameterDecls6504 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000000L});
    public static final BitSet FOLLOW_ellipsisParameterDecl_in_formalParameterDecls6510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableModifiers_in_normalParameterDecl6573 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_normalParameterDecl6575 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_normalParameterDecl6577 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_normalParameterDecl6604 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_normalParameterDecl6608 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_variableModifiers_in_ellipsisParameterDecl6682 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_ellipsisParameterDecl6706 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_ELLIPSIS_in_ellipsisParameterDecl6711 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_ellipsisParameterDecl6736 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation6803 = new BitSet(new long[]{0x0000900000000000L});
    public static final BitSet FOLLOW_THIS_in_explicitConstructorInvocation6846 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_SUPER_in_explicitConstructorInvocation6876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_explicitConstructorInvocation6912 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_explicitConstructorInvocation6914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_primary_in_explicitConstructorInvocation6941 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_explicitConstructorInvocation6967 = new BitSet(new long[]{0x0000100000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation6980 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_SUPER_in_explicitConstructorInvocation7017 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_explicitConstructorInvocation7043 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_explicitConstructorInvocation7045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedName7110 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_qualifiedName7137 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedName7141 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
    public static final BitSet FOLLOW_annotation_in_annotations7218 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
    public static final BitSet FOLLOW_MONKEYS_AT_in_annotation7297 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_qualifiedName_in_annotation7299 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_annotation7327 = new BitSet(new long[]{0xFF90920A81041290L,0x0000800007807007L});
    public static final BitSet FOLLOW_elementValuePairs_in_annotation7354 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_elementValue_in_annotation7406 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_annotation7470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs7533 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_elementValuePairs7558 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs7562 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_IDENTIFIER_in_elementValuePair7610 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_elementValuePair7614 = new BitSet(new long[]{0xFF90920A81041290L,0x0000800007807005L});
    public static final BitSet FOLLOW_elementValue_in_elementValuePair7616 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_conditionalExpression_in_elementValue7653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotation_in_elementValue7677 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_elementValueArrayInitializer_in_elementValue7701 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACE_in_elementValueArrayInitializer7766 = new BitSet(new long[]{0xFF90920A81041290L,0x000080000780708DL});
    public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer7793 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000088L});
    public static final BitSet FOLLOW_COMMA_in_elementValueArrayInitializer7826 = new BitSet(new long[]{0xFF90920A81041290L,0x0000800007807005L});
    public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer7830 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000088L});
    public static final BitSet FOLLOW_COMMA_in_elementValueArrayInitializer7877 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_RBRACE_in_elementValueArrayInitializer7881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_annotationTypeDeclaration7933 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_MONKEYS_AT_in_annotationTypeDeclaration7937 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_INTERFACE_in_annotationTypeDeclaration7963 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_annotationTypeDeclaration7987 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_annotationTypeBody_in_annotationTypeDeclaration8011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACE_in_annotationTypeBody8075 = new BitSet(new long[]{0x00244EE7815432B0L,0x0000800000000048L});
    public static final BitSet FOLLOW_annotationTypeElementDeclaration_in_annotationTypeBody8078 = new BitSet(new long[]{0x00244EE7815432B0L,0x0000800000000048L});
    public static final BitSet FOLLOW_RBRACE_in_annotationTypeBody8105 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationMethodDeclaration_in_annotationTypeElementDeclaration8156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFieldDeclaration_in_annotationTypeElementDeclaration8180 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_normalClassDeclaration_in_annotationTypeElementDeclaration8204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_normalInterfaceDeclaration_in_annotationTypeElementDeclaration8228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumDeclaration_in_annotationTypeElementDeclaration8252 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationTypeDeclaration_in_annotationTypeElementDeclaration8276 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_annotationTypeElementDeclaration8300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_annotationMethodDeclaration8363 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_annotationMethodDeclaration8365 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_annotationMethodDeclaration8367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_annotationMethodDeclaration8391 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_annotationMethodDeclaration8393 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000040L});
    public static final BitSet FOLLOW_DEFAULT_in_annotationMethodDeclaration8396 = new BitSet(new long[]{0xFF90920A81041290L,0x0000800007807005L});
    public static final BitSet FOLLOW_elementValue_in_annotationMethodDeclaration8398 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_annotationMethodDeclaration8441 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACE_in_block8496 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_blockStatement_in_block8523 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_RBRACE_in_block8558 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STATIC_in_staticBlock8609 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_LBRACE_in_staticBlock8611 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_blockStatement_in_staticBlock8614 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x000080000780704DL,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_RBRACE_in_staticBlock8641 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localVariableDeclarationStatement_in_blockStatement8683 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_blockStatement8711 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_blockStatement8735 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localVariableDeclaration_in_localVariableDeclarationStatement8786 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_localVariableDeclarationStatement8810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableModifiers_in_localVariableDeclaration8859 = new BitSet(new long[]{0x0000020281041290L,0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_VAR_in_localVariableDeclaration8884 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_type_in_localVariableDeclaration8898 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_localVariableDeclaration8941 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_localVariableDeclaration8968 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_localVariableDeclaration8972 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_block_in_statement9035 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASSERT_in_statement9080 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_IDENTIFIER_in_statement9101 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_statement9142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010040L});
    public static final BitSet FOLLOW_COLON_in_statement9145 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_statement9149 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_statement9194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_parExpression_in_statement9198 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_statement9202 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_ELSE_in_statement9218 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_statement9222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forstatement_in_statement9250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_statement9276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_parExpression_in_statement9280 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_statement9284 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DO_in_statement9310 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_statement9314 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_WHILE_in_statement9316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_parExpression_in_statement9320 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_trystatement_in_statement9350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SWITCH_in_statement9376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_parExpression_in_statement9380 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_LBRACE_in_statement9382 = new BitSet(new long[]{0x0000000000010400L,0x0000000000000008L});
    public static final BitSet FOLLOW_switchBlockStatementGroups_in_statement9386 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_RBRACE_in_statement9390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SYNCHRONIZED_in_statement9416 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_parExpression_in_statement9420 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_statement9424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RETURN_in_statement9450 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807041L});
    public static final BitSet FOLLOW_expression_in_statement9455 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THROW_in_statement9489 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_statement9493 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAK_in_statement9523 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000040L});
    public static final BitSet FOLLOW_IDENTIFIER_in_statement9540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9577 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONTINUE_in_statement9607 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000040L});
    public static final BitSet FOLLOW_IDENTIFIER_in_statement9624 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9661 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_statement9691 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_statement9696 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_statement9727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_statement9729 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_statement9733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_statement9759 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups9824 = new BitSet(new long[]{0x0000000000010402L});
    public static final BitSet FOLLOW_switchLabel_in_switchBlockStatementGroup9883 = new BitSet(new long[]{0xFFFDFFEF8B56B3F2L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_blockStatement_in_switchBlockStatementGroup9908 = new BitSet(new long[]{0xFFFDFFEF8B56B3F2L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_CASE_in_switchLabel9956 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_switchLabel9958 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_switchLabel9960 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DEFAULT_in_switchLabel9984 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_switchLabel9986 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TRY_in_trystatement10050 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_trystatement10054 = new BitSet(new long[]{0x0000000000800800L});
    public static final BitSet FOLLOW_catches_in_trystatement10084 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_FINALLY_in_trystatement10086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_trystatement10090 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catches_in_trystatement10124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FINALLY_in_trystatement10156 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_trystatement10160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catchClause_in_catches10240 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_catchClause_in_catches10267 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_CATCH_in_catchClause10341 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_catchClause10343 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000000L});
    public static final BitSet FOLLOW_formalParameter_in_catchClause10345 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_catchClause10369 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_catchClause10371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableModifiers_in_formalParameter10422 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_formalParameter10424 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_formalParameter10426 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_formalParameter10453 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_formalParameter10457 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_FOR_in_forstatement10536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_forstatement10538 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000000L});
    public static final BitSet FOLLOW_variableModifiers_in_forstatement10540 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_forstatement10542 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forstatement10544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_forstatement10548 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_forstatement10576 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_forstatement10578 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_forstatement10582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_forstatement10628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_forstatement10630 = new BitSet(new long[]{0xFF90920A81441290L,0x0000800007807041L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_forInit_in_forstatement10633 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_forstatement10676 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807041L});
    public static final BitSet FOLLOW_expression_in_forstatement10681 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_forstatement10724 = new BitSet(new long[]{0xFF90920A81441290L,0x0000800007807003L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_expressionList_in_forstatement10727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_forstatement10770 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_forstatement10774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localVariableDeclaration_in_forInit10811 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expressionList_in_forInit10835 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_parExpression10874 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_parExpression10876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_parExpression10880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_expressionList10945 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_expressionList10970 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_expressionList10974 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_conditionalExpression_in_expression11049 = new BitSet(new long[]{0x0000000000000002L,0x00000FF000001C00L});
    public static final BitSet FOLLOW_assignmentOperator_in_expression11074 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_expression11078 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EQ_in_assignmentOperator11127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PLUSEQ_in_assignmentOperator11151 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUBEQ_in_assignmentOperator11175 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STAREQ_in_assignmentOperator11199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SLASHEQ_in_assignmentOperator11223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_AMPEQ_in_assignmentOperator11247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BAREQ_in_assignmentOperator11271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CARETEQ_in_assignmentOperator11295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PERCENTEQ_in_assignmentOperator11319 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_assignmentOperator11354 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_LT_in_assignmentOperator11358 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_assignmentOperator11362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_assignmentOperator11399 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_assignmentOperator11403 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_assignmentOperator11407 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_assignmentOperator11411 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_assignmentOperator11446 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_assignmentOperator11450 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_assignmentOperator11454 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_conditionalOrExpression_in_conditionalExpression11519 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
    public static final BitSet FOLLOW_QUES_in_conditionalExpression11546 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_conditionalExpression11548 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_conditionalExpression11550 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_conditionalExpression_in_conditionalExpression11554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression11630 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
    public static final BitSet FOLLOW_BARBAR_in_conditionalOrExpression11657 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression11661 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
    public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression11737 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_AMPAMP_in_conditionalAndExpression11764 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression11768 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression11844 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
    public static final BitSet FOLLOW_BAR_in_inclusiveOrExpression11871 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression11875 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
    public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression11951 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
    public static final BitSet FOLLOW_CARET_in_exclusiveOrExpression11978 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression11982 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
    public static final BitSet FOLLOW_equalityExpression_in_andExpression12058 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_AMP_in_andExpression12085 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_equalityExpression_in_andExpression12089 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression12165 = new BitSet(new long[]{0x0000000000000002L,0x0000000000120000L});
    public static final BitSet FOLLOW_EQEQ_in_equalityExpression12212 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_BANGEQ_in_equalityExpression12250 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression12298 = new BitSet(new long[]{0x0000000000000002L,0x0000000000120000L});
    public static final BitSet FOLLOW_relationalExpression_in_instanceOfExpression12378 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_INSTANCEOF_in_instanceOfExpression12405 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_instanceOfExpression12409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression12485 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
    public static final BitSet FOLLOW_relationalOp_in_relationalExpression12512 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression12516 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
    public static final BitSet FOLLOW_LT_in_relationalOp12573 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_relationalOp12577 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_relationalOp12610 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_relationalOp12614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_relationalOp12639 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_relationalOp12663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression12728 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
    public static final BitSet FOLLOW_shiftOp_in_shiftExpression12755 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression12759 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
    public static final BitSet FOLLOW_LT_in_shiftOp12817 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_LT_in_shiftOp12821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_shiftOp12856 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_shiftOp12860 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_shiftOp12864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_shiftOp12897 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_shiftOp12901 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression12967 = new BitSet(new long[]{0x0000000000000002L,0x0000000006000000L});
    public static final BitSet FOLLOW_PLUS_in_additiveExpression13015 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_SUB_in_additiveExpression13057 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression13109 = new BitSet(new long[]{0x0000000000000002L,0x0000000006000000L});
    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression13196 = new BitSet(new long[]{0x0000000000000002L,0x0000000118000000L});
    public static final BitSet FOLLOW_STAR_in_multiplicativeExpression13243 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_SLASH_in_multiplicativeExpression13285 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_PERCENT_in_multiplicativeExpression13327 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression13379 = new BitSet(new long[]{0x0000000000000002L,0x0000000118000000L});
    public static final BitSet FOLLOW_PLUS_in_unaryExpression13446 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression13451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_unaryExpression13475 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_INTLITERAL_in_unaryExpression13477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_unaryExpression13501 = new BitSet(new long[]{0x0100000000000000L});
    public static final BitSet FOLLOW_LONGLITERAL_in_unaryExpression13503 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_unaryExpression13527 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression13531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PLUSPLUS_in_unaryExpression13555 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression13559 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUBSUB_in_unaryExpression13583 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression13587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression13611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TILDE_in_unaryExpressionNotPlusMinus13674 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus13678 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BANG_in_unaryExpressionNotPlusMinus13702 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus13706 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_castExpression_in_unaryExpressionNotPlusMinus13732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_primary_in_unaryExpressionNotPlusMinus13758 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800110L});
    public static final BitSet FOLLOW_selector_in_unaryExpressionNotPlusMinus13785 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800110L});
    public static final BitSet FOLLOW_PLUSPLUS_in_unaryExpressionNotPlusMinus13827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUBSUB_in_unaryExpressionNotPlusMinus13861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_castExpression13939 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_primitiveType_in_castExpression13941 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_castExpression13943 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_castExpression13945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_castExpression13969 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_castExpression13971 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_castExpression13973 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_castExpression13975 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parExpression_in_primary14054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THIS_in_primary14079 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000111L});
    public static final BitSet FOLLOW_DOT_in_primary14106 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primary14110 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000111L});
    public static final BitSet FOLLOW_identifierSuffix_in_primary14148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primary14185 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000111L});
    public static final BitSet FOLLOW_DOT_in_primary14212 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primary14216 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000111L});
    public static final BitSet FOLLOW_identifierSuffix_in_primary14254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUPER_in_primary14291 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000101L});
    public static final BitSet FOLLOW_superSuffix_in_primary14317 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_literal_in_primary14344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_creator_in_primary14370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_primitiveType_in_primary14396 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000110L});
    public static final BitSet FOLLOW_LBRACKET_in_primary14423 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_primary14427 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000110L});
    public static final BitSet FOLLOW_DOT_in_primary14474 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_primary14478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VOID_in_primary14504 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_DOT_in_primary14508 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_primary14512 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arguments_in_superSuffix14580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_superSuffix14604 = new BitSet(new long[]{0x0000000000000010L,0x0000000000001000L});
    public static final BitSet FOLLOW_typeArguments_in_superSuffix14609 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_superSuffix14644 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_superSuffix14671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACKET_in_identifierSuffix14765 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_identifierSuffix14769 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000110L});
    public static final BitSet FOLLOW_DOT_in_identifierSuffix14810 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_identifierSuffix14814 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACKET_in_identifierSuffix14841 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_identifierSuffix14845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_identifierSuffix14849 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_arguments_in_identifierSuffix14886 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_identifierSuffix14910 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_identifierSuffix14914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_identifierSuffix14938 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_identifierSuffix14942 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_identifierSuffix14946 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_identifierSuffix14950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_identifierSuffix14974 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_THIS_in_identifierSuffix14978 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_identifierSuffix15002 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_SUPER_in_identifierSuffix15006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_identifierSuffix15010 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_innerCreator_in_identifierSuffix15036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_selector15102 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_selector15104 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_selector15129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_selector15165 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_THIS_in_selector15169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_selector15193 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_SUPER_in_selector15197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000101L});
    public static final BitSet FOLLOW_superSuffix_in_selector15223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_innerCreator_in_selector15248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACKET_in_selector15273 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_selector15275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_selector15279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_creator15329 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_creator15331 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_classOrInterfaceType_in_creator15335 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_classCreatorRest_in_creator15339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_creator15363 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_classOrInterfaceType_in_creator15367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_classCreatorRest_in_creator15371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_creator15398 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_LBRACE_in_creator15400 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000008L});
    public static final BitSet FOLLOW_anonymousTypeBody_in_creator15404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_RBRACE_in_creator15408 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arrayCreator_in_creator15426 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableDeclarator_in_anonymousTypeBody15481 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_anonymousTypeBody15508 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_variableDeclarator_in_anonymousTypeBody15512 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_NEW_in_arrayCreator15585 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_createdName_in_arrayCreator15589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_arrayCreator15613 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_arrayCreator15615 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000014L});
    public static final BitSet FOLLOW_LBRACKET_in_arrayCreator15628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_arrayCreator15632 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000014L});
    public static final BitSet FOLLOW_arrayInitializer_in_arrayCreator15669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_arrayCreator15694 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_createdName_in_arrayCreator15698 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_arrayCreator15722 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_arrayCreator15726 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_arrayCreator15750 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_arrayCreator15764 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_arrayCreator15768 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_arrayCreator15800 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_arrayCreator15824 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_arrayCreator15828 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_arrayInitializer_in_variableInitializer15890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_variableInitializer15914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACE_in_arrayInitializer15977 = new BitSet(new long[]{0xFF90920A81041290L,0x000000000780708DL});
    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer15995 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000088L});
    public static final BitSet FOLLOW_COMMA_in_arrayInitializer16032 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807005L});
    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer16036 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000088L});
    public static final BitSet FOLLOW_COMMA_in_arrayInitializer16108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_RBRACE_in_arrayInitializer16121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classOrInterfaceType_in_createdName16158 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_primitiveType_in_createdName16182 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_innerCreator16247 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_NEW_in_innerCreator16251 = new BitSet(new long[]{0x0000000000000010L,0x0000000000001000L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_innerCreator16262 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_innerCreator16297 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001001L});
    public static final BitSet FOLLOW_typeArguments_in_innerCreator16322 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_classCreatorRest_in_innerCreator16357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arguments_in_classCreatorRest16408 = new BitSet(new long[]{0x0000000010200002L,0x0000000000001004L});
    public static final BitSet FOLLOW_classBody_in_classCreatorRest16433 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_nonWildcardTypeArguments16484 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_typeList_in_nonWildcardTypeArguments16486 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_nonWildcardTypeArguments16510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_arguments16546 = new BitSet(new long[]{0xFF90920A81441290L,0x0000800007807003L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_expressionList_in_arguments16551 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_arguments16578 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INTLITERAL_in_literal16614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LONGLITERAL_in_literal16638 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FLOATLITERAL_in_literal16662 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOUBLELITERAL_in_literal16686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CHARLITERAL_in_literal16710 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_literal16734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TRUE_in_literal16758 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FALSE_in_literal16782 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NULL_in_literal16806 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_classHeader16844 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_classHeader16846 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_classHeader16848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_enumHeader16868 = new BitSet(new long[]{0x0000000000100010L});
    public static final BitSet FOLLOW_set_in_enumHeader16870 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_enumHeader16876 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_interfaceHeader16896 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_INTERFACE_in_interfaceHeader16898 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_interfaceHeader16900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_annotationHeader16920 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_MONKEYS_AT_in_annotationHeader16922 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_INTERFACE_in_annotationHeader16924 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_annotationHeader16926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_typeHeader16946 = new BitSet(new long[]{0x0000000100102000L,0x0000800000000000L});
    public static final BitSet FOLLOW_CLASS_in_typeHeader16949 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ENUM_in_typeHeader16951 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_MONKEYS_AT_in_typeHeader16954 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_INTERFACE_in_typeHeader16958 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_typeHeader16962 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_methodHeader16982 = new BitSet(new long[]{0x0010020281041290L,0x0000000000001000L});
    public static final BitSet FOLLOW_typeParameters_in_methodHeader16984 = new BitSet(new long[]{0x0010020281041290L});
    public static final BitSet FOLLOW_type_in_methodHeader16988 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_VOID_in_methodHeader16990 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodHeader16994 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_methodHeader16996 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_fieldHeader17016 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_fieldHeader17018 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_fieldHeader17020 = new BitSet(new long[]{0x0000000000000000L,0x00000000000004D0L});
    public static final BitSet FOLLOW_LBRACKET_in_fieldHeader17023 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_fieldHeader17024 = new BitSet(new long[]{0x0000000000000000L,0x00000000000004D0L});
    public static final BitSet FOLLOW_set_in_fieldHeader17028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableModifiers_in_localVariableHeader17054 = new BitSet(new long[]{0x0000020281041290L,0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_localVariableHeader17057 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_VAR_in_localVariableHeader17059 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_localVariableHeader17062 = new BitSet(new long[]{0x0000000000000000L,0x00000000000004D0L});
    public static final BitSet FOLLOW_LBRACKET_in_localVariableHeader17065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_localVariableHeader17066 = new BitSet(new long[]{0x0000000000000000L,0x00000000000004D0L});
    public static final BitSet FOLLOW_set_in_localVariableHeader17070 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotations_in_synpred2_Java163 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_packageDeclaration_in_synpred2_Java210 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classHeader_in_synpred12_Java844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classHeader_in_synpred13_Java844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumHeader_in_synpred13_Java848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_synpred16_Java1417 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CLASS_in_synpred16_Java1419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceHeader_in_synpred33_Java2788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationHeader_in_synpred34_Java2816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_fieldHeader_in_synpred43_Java3493 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_methodHeader_in_synpred44_Java3524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classHeader_in_synpred45_Java3554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classHeader_in_synpred46_Java3554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumHeader_in_synpred46_Java3558 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceHeader_in_synpred47_Java3588 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceHeader_in_synpred48_Java3588 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationHeader_in_synpred48_Java3592 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_modifiers_in_synpred50_Java3686 = new BitSet(new long[]{0x0000000000000010L,0x0000000000001000L});
    public static final BitSet FOLLOW_typeParameters_in_synpred50_Java3688 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred50_Java3691 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_synpred50_Java3693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_explicitConstructorInvocation_in_synpred53_Java3883 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFieldDeclaration_in_synpred63_Java4708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceMethodDeclaration_in_synpred64_Java4732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_synpred65_Java4756 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classDeclaration_in_synpred66_Java4780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ellipsisParameterDecl_in_synpred91_Java6387 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_normalParameterDecl_in_synpred93_Java6413 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_synpred93_Java6438 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000000L});
    public static final BitSet FOLLOW_normalParameterDecl_in_synpred93_Java6442 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_normalParameterDecl_in_synpred94_Java6480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_COMMA_in_synpred94_Java6504 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_synpred98_Java6803 = new BitSet(new long[]{0x0000900000000000L});
    public static final BitSet FOLLOW_THIS_in_synpred98_Java6846 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_SUPER_in_synpred98_Java6876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_arguments_in_synpred98_Java6912 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_synpred98_Java6914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationMethodDeclaration_in_synpred112_Java8156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFieldDeclaration_in_synpred113_Java8180 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_normalClassDeclaration_in_synpred114_Java8204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_normalInterfaceDeclaration_in_synpred115_Java8228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumDeclaration_in_synpred116_Java8252 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotationTypeDeclaration_in_synpred117_Java8276 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localVariableHeader_in_synpred121_Java8680 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typeHeader_in_synpred122_Java8708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASSERT_in_synpred128_Java9080 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred128_Java9101 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_synpred128_Java9142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010040L});
    public static final BitSet FOLLOW_COLON_in_synpred128_Java9145 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_synpred128_Java9149 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_synpred128_Java9155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ELSE_in_synpred129_Java9214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_synpred144_Java9691 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_SEMI_in_synpred144_Java9696 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred145_Java9727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_synpred145_Java9729 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_synpred145_Java9733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catches_in_synpred149_Java10084 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_FINALLY_in_synpred149_Java10086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_synpred149_Java10090 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catches_in_synpred150_Java10124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_synpred153_Java10536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_synpred153_Java10538 = new BitSet(new long[]{0x0000020281441290L,0x0000800000000000L});
    public static final BitSet FOLLOW_variableModifiers_in_synpred153_Java10540 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_type_in_synpred153_Java10542 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred153_Java10544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_COLON_in_synpred153_Java10548 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_synpred153_Java10576 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_synpred153_Java10578 = new BitSet(new long[]{0xFFFDFFEF8B56B3F0L,0x0000800007807045L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_statement_in_synpred153_Java10582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localVariableDeclaration_in_synpred157_Java10811 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_synpred169_Java11344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_LT_in_synpred169_Java11346 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_synpred169_Java11348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_synpred170_Java11387 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_synpred170_Java11389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_synpred170_Java11391 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_synpred170_Java11393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_synpred171_Java11436 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_synpred171_Java11438 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_synpred171_Java11440 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_synpred182_Java12565 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_synpred182_Java12567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_synpred183_Java12602 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_EQ_in_synpred183_Java12604 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_synpred186_Java12809 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_LT_in_synpred186_Java12811 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_synpred187_Java12846 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_synpred187_Java12848 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_synpred187_Java12850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_synpred188_Java12889 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_GT_in_synpred188_Java12891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_synpred195_Java13475 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_INTLITERAL_in_synpred195_Java13477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_synpred196_Java13501 = new BitSet(new long[]{0x0100000000000000L});
    public static final BitSet FOLLOW_LONGLITERAL_in_synpred196_Java13503 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_synpred197_Java13527 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_synpred197_Java13531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_castExpression_in_synpred202_Java13732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_synpred206_Java13939 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_primitiveType_in_synpred206_Java13941 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_RPAREN_in_synpred206_Java13943 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_unaryExpression_in_synpred206_Java13945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_synpred208_Java14106 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred208_Java14110 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifierSuffix_in_synpred209_Java14148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_synpred211_Java14212 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred211_Java14216 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifierSuffix_in_synpred212_Java14254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACKET_in_synpred224_Java14841 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_synpred224_Java14845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_synpred224_Java14849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_synpred236_Java15329 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_synpred236_Java15331 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_classOrInterfaceType_in_synpred236_Java15335 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_classCreatorRest_in_synpred236_Java15339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_synpred237_Java15363 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_classOrInterfaceType_in_synpred237_Java15367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_classCreatorRest_in_synpred237_Java15371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_synpred238_Java15398 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_LBRACE_in_synpred238_Java15400 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000008L});
    public static final BitSet FOLLOW_anonymousTypeBody_in_synpred238_Java15404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_RBRACE_in_synpred238_Java15408 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_synpred242_Java15585 = new BitSet(new long[]{0x0000020281041290L});
    public static final BitSet FOLLOW_createdName_in_synpred242_Java15589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_LBRACKET_in_synpred242_Java15613 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_synpred242_Java15615 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000014L});
    public static final BitSet FOLLOW_LBRACKET_in_synpred242_Java15628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_synpred242_Java15632 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000014L});
    public static final BitSet FOLLOW_arrayInitializer_in_synpred242_Java15669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACKET_in_synpred243_Java15764 = new BitSet(new long[]{0xFF90920A81041290L,0x0000000007807001L});
    public static final BitSet FOLLOW_expression_in_synpred243_Java15768 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_RBRACKET_in_synpred243_Java15800 = new BitSet(new long[]{0x0000000000000002L});

}