// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 com/shin1ogawa/as3/AS3.g 2009-06-06 01:54:39

package jp.sourceforge.asclipse.as3;

import java.util.ArrayList;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

import org.antlr.runtime.tree.*;

public class AS3Parser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "AS", "BREAK", "CASE", "CATCH", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DELETE", "DO", "ELSE", "EXTENDS", "FALSE", "FINALLY", "FOR", "FUNCTION", "IF", "IMPLEMENTS", "IMPORT", "IN", "INSTANCEOF", "INTERFACE", "INTERNAL", "IS", "NATIVE", "NEW", "NULL", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SUPER", "SWITCH", "THIS", "THROW", "TO", "TRUE", "TRY", "TYPEOF", "USE", "VAR", "VOID", "WHILE", "WITH", "EACH", "GET", "SET", "NAMESPACE", "INCLUDE", "DYNAMIC", "FINAL", "OVERRIDE", "STATIC", "SEMI", "LCURLY", "RCURLY", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "DOT", "COMMA", "LT", "GT", "LTE", "GTE", "EQ", "NEQ", "SAME", "NSAME", "PLUS", "SUB", "STAR", "DIV", "MOD", "INC", "DEC", "SHL", "SHR", "SHU", "AND", "OR", "XOR", "NOT", "INV", "LAND", "LOR", "QUE", "COLON", "ASSIGN", "UNDERSCORE", "DOLLAR", "MUL_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "ADD_ASSIGN", "SUB_ASSIGN", "SHL_ASSIGN", "SHR_ASSIGN", "SHU_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "ELLIPSIS", "XML_ELLIPSIS", "XML_TEND", "XML_E_TEND", "XML_NS_OP", "XML_AT", "XML_LS_STD", "XML_LS_END", "ALPHABET", "NUMBER", "HEX_DIGIT", "CR", "LF", "UNICODE_ESCAPE", "ESCAPE_SEQUENCE", "EOL", "WHITESPACE", "COMMENT_MULTILINE", "COMMENT_SINGLELINE", "SINGLE_QUOTE_LITERAL", "DOUBLE_QUOTE_LITERAL", "REGULAR_EXPR_BODY", "REGULAR_EXPR_FLAG", "REGULAR_EXPR_LITERAL", "REGULAR_EXPR_FIRST_CHAR", "REGULAR_EXPR_CHAR", "BACKSLASH_SEQUENCE", "IDENT_PART", "HEX_NUMBER_LITERAL", "DEC_NUMBER", "EXPONENT", "DEC_NUMBER_LITERAL", "IDENT_NAME_ASCII_START", "IDENTIFIER", "IDENT_ASCII_START", "XML_COMMENT", "XML_CDATA", "XML_PI", "XML_TEXT"
    };
    public static final int CONST=9;
    public static final int COMMA=66;
    public static final int AS=4;
    public static final int LF=120;
    public static final int XML_E_TEND=111;
    public static final int NUMBER=117;
    public static final int OR_ASSIGN=107;
    public static final int XOR_ASSIGN=106;
    public static final int FALSE=16;
    public static final int XML_ELLIPSIS=109;
    public static final int NAMESPACE=52;
    public static final int DEC_NUMBER_LITERAL=139;
    public static final int AND_ASSIGN=105;
    public static final int ADD_ASSIGN=100;
    public static final int IMPORT=22;
    public static final int PACKAGE=31;
    public static final int DEC_NUMBER=137;
    public static final int SHR=83;
    public static final int CONTINUE=10;
    public static final int DOT=65;
    public static final int PRIVATE=32;
    public static final int TO=40;
    public static final int AND=85;
    public static final int GET=50;
    public static final int LCURLY=59;
    public static final int FUNCTION=19;
    public static final int INCLUDE=53;
    public static final int GTE=70;
    public static final int XML_LS_STD=114;
    public static final int RPAREN=62;
    public static final int SINGLE_QUOTE_LITERAL=127;
    public static final int PLUS=75;
    public static final int FINALLY=17;
    public static final int EXTENDS=15;
    public static final int XML_TEXT=146;
    public static final int SHL_ASSIGN=102;
    public static final int SUPER=36;
    public static final int INTERNAL=26;
    public static final int SAME=73;
    public static final int XML_COMMENT=143;
    public static final int MOD_ASSIGN=99;
    public static final int NEW=29;
    public static final int EQ=71;
    public static final int LT=67;
    public static final int FINAL=55;
    public static final int DOLLAR=96;
    public static final int IDENT_PART=135;
    public static final int LAND=90;
    public static final int LBRACK=63;
    public static final int CATCH=7;
    public static final int STATIC=57;
    public static final int SEMI=58;
    public static final int CASE=6;
    public static final int INTERFACE=25;
    public static final int DIV_ASSIGN=98;
    public static final int INV=89;
    public static final int ELSE=14;
    public static final int XML_PI=145;
    public static final int BREAK=5;
    public static final int DYNAMIC=54;
    public static final int SUB_ASSIGN=101;
    public static final int NULL=30;
    public static final int XOR=87;
    public static final int COMMENT_MULTILINE=125;
    public static final int COLON=93;
    public static final int DIV=78;
    public static final int MUL_ASSIGN=97;
    public static final int IDENTIFIER=141;
    public static final int SET=51;
    public static final int TRUE=41;
    public static final int REGULAR_EXPR_FIRST_CHAR=132;
    public static final int UNDERSCORE=95;
    public static final int THROW=39;
    public static final int EACH=49;
    public static final int CR=119;
    public static final int PUBLIC=34;
    public static final int SHL=82;
    public static final int IDENT_NAME_ASCII_START=140;
    public static final int LOR=91;
    public static final int XML_NS_OP=112;
    public static final int TYPEOF=43;
    public static final int INC=80;
    public static final int DOUBLE_QUOTE_LITERAL=128;
    public static final int HEX_NUMBER_LITERAL=136;
    public static final int XML_AT=113;
    public static final int ELLIPSIS=108;
    public static final int MOD=79;
    public static final int OR=86;
    public static final int PROTECTED=33;
    public static final int UNICODE_ESCAPE=121;
    public static final int RCURLY=60;
    public static final int SHU=84;
    public static final int SHR_ASSIGN=103;
    public static final int ASSIGN=94;
    public static final int REGULAR_EXPR_FLAG=130;
    public static final int INSTANCEOF=24;
    public static final int USE=44;
    public static final int VOID=46;
    public static final int LPAREN=61;
    public static final int REGULAR_EXPR_BODY=129;
    public static final int HEX_DIGIT=118;
    public static final int XML_CDATA=144;
    public static final int QUE=92;
    public static final int NEQ=72;
    public static final int DELETE=12;
    public static final int COMMENT_SINGLELINE=126;
    public static final int XML_TEND=110;
    public static final int DO=13;
    public static final int BACKSLASH_SEQUENCE=134;
    public static final int IMPLEMENTS=21;
    public static final int XML_LS_END=115;
    public static final int SWITCH=37;
    public static final int WHILE=47;
    public static final int IS=27;
    public static final int REGULAR_EXPR_LITERAL=131;
    public static final int REGULAR_EXPR_CHAR=133;
    public static final int GT=68;
    public static final int IDENT_ASCII_START=142;
    public static final int OVERRIDE=56;
    public static final int THIS=38;
    public static final int WHITESPACE=124;
    public static final int WITH=48;
    public static final int IN=23;
    public static final int VAR=45;
    public static final int LTE=69;
    public static final int CLASS=8;
    public static final int NATIVE=28;
    public static final int DEC=81;
    public static final int RETURN=35;
    public static final int EXPONENT=138;
    public static final int ESCAPE_SEQUENCE=122;
    public static final int IF=20;
    public static final int ALPHABET=116;
    public static final int EOF=-1;
    public static final int EOL=123;
    public static final int FOR=18;
    public static final int RBRACK=64;
    public static final int DEFAULT=11;
    public static final int SHU_ASSIGN=104;
    public static final int STAR=77;
    public static final int SUB=76;
    public static final int TRY=42;
    public static final int NOT=88;
    public static final int NSAME=74;

    // delegates
    // delegators


        public AS3Parser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public AS3Parser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        
    protected TreeAdaptor adaptor = new CommonTreeAdaptor();

    public void setTreeAdaptor(TreeAdaptor adaptor) {
        this.adaptor = adaptor;
    }
    public TreeAdaptor getTreeAdaptor() {
        return adaptor;
    }

    public String[] getTokenNames() { return AS3Parser.tokenNames; }
    public String getGrammarFileName() { return "com/shin1ogawa/as3/AS3.g"; }


    	// options
    	private List<Exception> mParseErrors;

    	// private ASPrettyPrinter mPrinter;

    	public boolean foundNextLT() {
    		int i = 1;
    		while (true) {
    			Token token = input.LT(i);
    			if (token.getText() != null && token.getText().startsWith("<"))
    				return (i > 1);
    			if (token.getType() == EOF)
    				return false;
    			i++;
    		}
    	}

    	public void changeTokensUpToNextLT() {
    		int i = 1;
    		while (true) {
    			Token t = input.LT(i);
    			if (t.getText() != null && t.getText().startsWith("<"))
    				return;
    			if (t.getType() == EOF)
    				return;
    			t.setType(XML_TEXT);

    			i++;
    		}
    	}

    	public boolean findVirtualHiddenToken(ParserRuleReturnScope retval) {
    		int index = retval.start.getTokenIndex();
    		if (index < 0) {
    			index = input.size();
    		}
    		for (int ix = index - 1; ix >= 0; ix--) {
    			Token lt = input.get(ix);
    			int type = lt.getType();
    			if (lt.getChannel() == Token.DEFAULT_CHANNEL)
    				break;
    			if (type == EOL
    					|| type == COMMENT_SINGLELINE
    					|| (type == COMMENT_MULTILINE && lt.getText().matches(
    							"/.*\r\n|\r|\n"))) {
    				retval.start = lt;
    				return true;
    			}
    		}
    		return false;

    	}

    	public void reportError(RecognitionException e) {
    		if (mParseErrors == null)
    			mParseErrors = new ArrayList<Exception>();
    		mParseErrors.add(e);
    		super.reportError(e);
    	}

    	public List<Exception> getParseErrors() {
    		return mParseErrors;
    	}

    	public static final int CHANNEL_SLCOMMENT = 43;
    	public static final int CHANNEL_MLCOMMENT = 42;
    	public static final int CHANNEL_WHITESPACE = 41;
    	public static final int CHANNEL_EOL = 40;

    	private final boolean promoteWhitespace(ParserRuleReturnScope rule) {
    		Token lt = input.LT(1);
    		int index = lt.getTokenIndex();
    		if (index < 0) {
    			index = input.size();
    		}
    		int la = lt.getType();

    		for (int ix = index - 1; ix >= 0; ix--) {
    			lt = input.get(ix);
    			int type = lt.getType();
    			if (type == WHITESPACE || type == EOL) {
    				return true;
    			} else if (lt.getChannel() == Token.DEFAULT_CHANNEL) {
    				break;
    			}
    		}
    		return false;
    	}


    public static class booleanLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "booleanLiteral"
    // com/shin1ogawa/as3/AS3.g:801:1: booleanLiteral : ( TRUE | FALSE );
    public final AS3Parser.booleanLiteral_return booleanLiteral() throws RecognitionException {
        AS3Parser.booleanLiteral_return retval = new AS3Parser.booleanLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set1=null;

        Object set1_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:802:2: ( TRUE | FALSE )
            // com/shin1ogawa/as3/AS3.g:
            {
            root_0 = (Object)adaptor.nil();

            set1=(Token)input.LT(1);
            if ( input.LA(1)==FALSE||input.LA(1)==TRUE ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set1));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "booleanLiteral"

    public static class numericLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "numericLiteral"
    // com/shin1ogawa/as3/AS3.g:804:1: numericLiteral : ( DEC_NUMBER_LITERAL | HEX_NUMBER_LITERAL );
    public final AS3Parser.numericLiteral_return numericLiteral() throws RecognitionException {
        AS3Parser.numericLiteral_return retval = new AS3Parser.numericLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set2=null;

        Object set2_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:805:2: ( DEC_NUMBER_LITERAL | HEX_NUMBER_LITERAL )
            // com/shin1ogawa/as3/AS3.g:
            {
            root_0 = (Object)adaptor.nil();

            set2=(Token)input.LT(1);
            if ( input.LA(1)==HEX_NUMBER_LITERAL||input.LA(1)==DEC_NUMBER_LITERAL ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set2));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "numericLiteral"

    public static class stringLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "stringLiteral"
    // com/shin1ogawa/as3/AS3.g:807:1: stringLiteral : ( SINGLE_QUOTE_LITERAL | DOUBLE_QUOTE_LITERAL );
    public final AS3Parser.stringLiteral_return stringLiteral() throws RecognitionException {
        AS3Parser.stringLiteral_return retval = new AS3Parser.stringLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set3=null;

        Object set3_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:808:2: ( SINGLE_QUOTE_LITERAL | DOUBLE_QUOTE_LITERAL )
            // com/shin1ogawa/as3/AS3.g:
            {
            root_0 = (Object)adaptor.nil();

            set3=(Token)input.LT(1);
            if ( (input.LA(1)>=SINGLE_QUOTE_LITERAL && input.LA(1)<=DOUBLE_QUOTE_LITERAL) ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set3));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "stringLiteral"

    public static class regularExpresionLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "regularExpresionLiteral"
    // com/shin1ogawa/as3/AS3.g:810:1: regularExpresionLiteral : REGULAR_EXPR_LITERAL ;
    public final AS3Parser.regularExpresionLiteral_return regularExpresionLiteral() throws RecognitionException {
        AS3Parser.regularExpresionLiteral_return retval = new AS3Parser.regularExpresionLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token REGULAR_EXPR_LITERAL4=null;

        Object REGULAR_EXPR_LITERAL4_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:811:2: ( REGULAR_EXPR_LITERAL )
            // com/shin1ogawa/as3/AS3.g:811:4: REGULAR_EXPR_LITERAL
            {
            root_0 = (Object)adaptor.nil();

            REGULAR_EXPR_LITERAL4=(Token)match(input,REGULAR_EXPR_LITERAL,FOLLOW_REGULAR_EXPR_LITERAL_in_regularExpresionLiteral2566); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            REGULAR_EXPR_LITERAL4_tree = (Object)adaptor.create(REGULAR_EXPR_LITERAL4);
            adaptor.addChild(root_0, REGULAR_EXPR_LITERAL4_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "regularExpresionLiteral"

    public static class identifierLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "identifierLiteral"
    // com/shin1ogawa/as3/AS3.g:813:1: identifierLiteral : ( IDENTIFIER | notQuiteReservedWord );
    public final AS3Parser.identifierLiteral_return identifierLiteral() throws RecognitionException {
        AS3Parser.identifierLiteral_return retval = new AS3Parser.identifierLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER5=null;
        AS3Parser.notQuiteReservedWord_return notQuiteReservedWord6 = null;


        Object IDENTIFIER5_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:814:2: ( IDENTIFIER | notQuiteReservedWord )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==IDENTIFIER) ) {
                alt1=1;
            }
            else if ( (LA1_0==NATIVE||LA1_0==TO||(LA1_0>=EACH && LA1_0<=NAMESPACE)||(LA1_0>=DYNAMIC && LA1_0<=STATIC)) ) {
                alt1=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:814:4: IDENTIFIER
                    {
                    root_0 = (Object)adaptor.nil();

                    IDENTIFIER5=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_identifierLiteral2576); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER5_tree = (Object)adaptor.create(IDENTIFIER5);
                    adaptor.addChild(root_0, IDENTIFIER5_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:814:17: notQuiteReservedWord
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_notQuiteReservedWord_in_identifierLiteral2580);
                    notQuiteReservedWord6=notQuiteReservedWord();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, notQuiteReservedWord6.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "identifierLiteral"

    public static class xmlNameLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlNameLiteral"
    // com/shin1ogawa/as3/AS3.g:816:1: xmlNameLiteral : ( IDENTIFIER | allKeywords ) ( SUB ( IDENTIFIER | allKeywords ) )* ;
    public final AS3Parser.xmlNameLiteral_return xmlNameLiteral() throws RecognitionException {
        AS3Parser.xmlNameLiteral_return retval = new AS3Parser.xmlNameLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER7=null;
        Token SUB9=null;
        Token IDENTIFIER10=null;
        AS3Parser.allKeywords_return allKeywords8 = null;

        AS3Parser.allKeywords_return allKeywords11 = null;


        Object IDENTIFIER7_tree=null;
        Object SUB9_tree=null;
        Object IDENTIFIER10_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:817:2: ( ( IDENTIFIER | allKeywords ) ( SUB ( IDENTIFIER | allKeywords ) )* )
            // com/shin1ogawa/as3/AS3.g:817:4: ( IDENTIFIER | allKeywords ) ( SUB ( IDENTIFIER | allKeywords ) )*
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:817:4: ( IDENTIFIER | allKeywords )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==IDENTIFIER) ) {
                alt2=1;
            }
            else if ( ((LA2_0>=AS && LA2_0<=STATIC)) ) {
                alt2=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:817:5: IDENTIFIER
                    {
                    IDENTIFIER7=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_xmlNameLiteral2591); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER7_tree = (Object)adaptor.create(IDENTIFIER7);
                    adaptor.addChild(root_0, IDENTIFIER7_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:817:18: allKeywords
                    {
                    pushFollow(FOLLOW_allKeywords_in_xmlNameLiteral2595);
                    allKeywords8=allKeywords();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, allKeywords8.getTree());

                    }
                    break;

            }

            // com/shin1ogawa/as3/AS3.g:817:31: ( SUB ( IDENTIFIER | allKeywords ) )*
            loop4:
            do {
                int alt4=2;
                alt4 = dfa4.predict(input);
                switch (alt4) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:817:32: SUB ( IDENTIFIER | allKeywords )
            	    {
            	    SUB9=(Token)match(input,SUB,FOLLOW_SUB_in_xmlNameLiteral2599); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    SUB9_tree = (Object)adaptor.create(SUB9);
            	    adaptor.addChild(root_0, SUB9_tree);
            	    }
            	    // com/shin1ogawa/as3/AS3.g:817:36: ( IDENTIFIER | allKeywords )
            	    int alt3=2;
            	    int LA3_0 = input.LA(1);

            	    if ( (LA3_0==IDENTIFIER) ) {
            	        alt3=1;
            	    }
            	    else if ( ((LA3_0>=AS && LA3_0<=STATIC)) ) {
            	        alt3=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 3, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt3) {
            	        case 1 :
            	            // com/shin1ogawa/as3/AS3.g:817:37: IDENTIFIER
            	            {
            	            IDENTIFIER10=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_xmlNameLiteral2602); if (state.failed) return retval;
            	            if ( state.backtracking==0 ) {
            	            IDENTIFIER10_tree = (Object)adaptor.create(IDENTIFIER10);
            	            adaptor.addChild(root_0, IDENTIFIER10_tree);
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // com/shin1ogawa/as3/AS3.g:817:50: allKeywords
            	            {
            	            pushFollow(FOLLOW_allKeywords_in_xmlNameLiteral2606);
            	            allKeywords11=allKeywords();

            	            state._fsp--;
            	            if (state.failed) return retval;
            	            if ( state.backtracking==0 ) adaptor.addChild(root_0, allKeywords11.getTree());

            	            }
            	            break;

            	    }


            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlNameLiteral"

    public static class literal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "literal"
    // com/shin1ogawa/as3/AS3.g:819:1: literal : ( NULL | booleanLiteral | numericLiteral | stringLiteral | regularExpresionLiteral );
    public final AS3Parser.literal_return literal() throws RecognitionException {
        AS3Parser.literal_return retval = new AS3Parser.literal_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token NULL12=null;
        AS3Parser.booleanLiteral_return booleanLiteral13 = null;

        AS3Parser.numericLiteral_return numericLiteral14 = null;

        AS3Parser.stringLiteral_return stringLiteral15 = null;

        AS3Parser.regularExpresionLiteral_return regularExpresionLiteral16 = null;


        Object NULL12_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:819:9: ( NULL | booleanLiteral | numericLiteral | stringLiteral | regularExpresionLiteral )
            int alt5=5;
            switch ( input.LA(1) ) {
            case NULL:
                {
                alt5=1;
                }
                break;
            case FALSE:
            case TRUE:
                {
                alt5=2;
                }
                break;
            case HEX_NUMBER_LITERAL:
            case DEC_NUMBER_LITERAL:
                {
                alt5=3;
                }
                break;
            case SINGLE_QUOTE_LITERAL:
            case DOUBLE_QUOTE_LITERAL:
                {
                alt5=4;
                }
                break;
            case REGULAR_EXPR_LITERAL:
                {
                alt5=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:819:11: NULL
                    {
                    root_0 = (Object)adaptor.nil();

                    NULL12=(Token)match(input,NULL,FOLLOW_NULL_in_literal2619); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    NULL12_tree = (Object)adaptor.create(NULL12);
                    adaptor.addChild(root_0, NULL12_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:819:18: booleanLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_booleanLiteral_in_literal2623);
                    booleanLiteral13=booleanLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, booleanLiteral13.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:819:35: numericLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_numericLiteral_in_literal2627);
                    numericLiteral14=numericLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, numericLiteral14.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:819:52: stringLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_stringLiteral_in_literal2631);
                    stringLiteral15=stringLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, stringLiteral15.getTree());

                    }
                    break;
                case 5 :
                    // com/shin1ogawa/as3/AS3.g:819:68: regularExpresionLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_regularExpresionLiteral_in_literal2635);
                    regularExpresionLiteral16=regularExpresionLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, regularExpresionLiteral16.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "literal"

    public static class xmlMarkup_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlMarkup"
    // com/shin1ogawa/as3/AS3.g:825:1: xmlMarkup : ( xmlComment | xmlCDATA | xmlPI );
    public final AS3Parser.xmlMarkup_return xmlMarkup() throws RecognitionException {
        AS3Parser.xmlMarkup_return retval = new AS3Parser.xmlMarkup_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlComment_return xmlComment17 = null;

        AS3Parser.xmlCDATA_return xmlCDATA18 = null;

        AS3Parser.xmlPI_return xmlPI19 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:826:2: ( xmlComment | xmlCDATA | xmlPI )
            int alt6=3;
            switch ( input.LA(1) ) {
            case XML_COMMENT:
                {
                alt6=1;
                }
                break;
            case XML_CDATA:
                {
                alt6=2;
                }
                break;
            case XML_PI:
                {
                alt6=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:826:4: xmlComment
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlComment_in_xmlMarkup2649);
                    xmlComment17=xmlComment();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlComment17.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:826:17: xmlCDATA
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlCDATA_in_xmlMarkup2653);
                    xmlCDATA18=xmlCDATA();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlCDATA18.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:826:28: xmlPI
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlPI_in_xmlMarkup2657);
                    xmlPI19=xmlPI();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPI19.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlMarkup"

    public static class xmlComment_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlComment"
    // com/shin1ogawa/as3/AS3.g:828:1: xmlComment : XML_COMMENT ;
    public final AS3Parser.xmlComment_return xmlComment() throws RecognitionException {
        AS3Parser.xmlComment_return retval = new AS3Parser.xmlComment_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_COMMENT20=null;

        Object XML_COMMENT20_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:829:2: ( XML_COMMENT )
            // com/shin1ogawa/as3/AS3.g:829:4: XML_COMMENT
            {
            root_0 = (Object)adaptor.nil();

            XML_COMMENT20=(Token)match(input,XML_COMMENT,FOLLOW_XML_COMMENT_in_xmlComment2667); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_COMMENT20_tree = (Object)adaptor.create(XML_COMMENT20);
            adaptor.addChild(root_0, XML_COMMENT20_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlComment"

    public static class xmlCDATA_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlCDATA"
    // com/shin1ogawa/as3/AS3.g:831:1: xmlCDATA : XML_CDATA ;
    public final AS3Parser.xmlCDATA_return xmlCDATA() throws RecognitionException {
        AS3Parser.xmlCDATA_return retval = new AS3Parser.xmlCDATA_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_CDATA21=null;

        Object XML_CDATA21_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:831:9: ( XML_CDATA )
            // com/shin1ogawa/as3/AS3.g:831:11: XML_CDATA
            {
            root_0 = (Object)adaptor.nil();

            XML_CDATA21=(Token)match(input,XML_CDATA,FOLLOW_XML_CDATA_in_xmlCDATA2675); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_CDATA21_tree = (Object)adaptor.create(XML_CDATA21);
            adaptor.addChild(root_0, XML_CDATA21_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlCDATA"

    public static class xmlPI_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlPI"
    // com/shin1ogawa/as3/AS3.g:833:1: xmlPI : XML_PI ;
    public final AS3Parser.xmlPI_return xmlPI() throws RecognitionException {
        AS3Parser.xmlPI_return retval = new AS3Parser.xmlPI_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_PI22=null;

        Object XML_PI22_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:833:7: ( XML_PI )
            // com/shin1ogawa/as3/AS3.g:833:9: XML_PI
            {
            root_0 = (Object)adaptor.nil();

            XML_PI22=(Token)match(input,XML_PI,FOLLOW_XML_PI_in_xmlPI2684); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_PI22_tree = (Object)adaptor.create(XML_PI22);
            adaptor.addChild(root_0, XML_PI22_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlPI"

    public static class xmlExprEval_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlExprEval"
    // com/shin1ogawa/as3/AS3.g:835:1: xmlExprEval : LCURLY expression RCURLY ;
    public final AS3Parser.xmlExprEval_return xmlExprEval() throws RecognitionException {
        AS3Parser.xmlExprEval_return retval = new AS3Parser.xmlExprEval_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LCURLY23=null;
        Token RCURLY25=null;
        AS3Parser.expression_return expression24 = null;


        Object LCURLY23_tree=null;
        Object RCURLY25_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:836:2: ( LCURLY expression RCURLY )
            // com/shin1ogawa/as3/AS3.g:836:4: LCURLY expression RCURLY
            {
            root_0 = (Object)adaptor.nil();

            LCURLY23=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_xmlExprEval2694); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY23_tree = (Object)adaptor.create(LCURLY23);
            adaptor.addChild(root_0, LCURLY23_tree);
            }
            pushFollow(FOLLOW_expression_in_xmlExprEval2696);
            expression24=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression24.getTree());
            RCURLY25=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_xmlExprEval2698); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY25_tree = (Object)adaptor.create(RCURLY25);
            adaptor.addChild(root_0, RCURLY25_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlExprEval"

    public static class xmlTextElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlTextElement"
    // com/shin1ogawa/as3/AS3.g:838:1: xmlTextElement : ( allKeywords | lexToken= ( DEC_NUMBER_LITERAL | HEX_NUMBER_LITERAL | SINGLE_QUOTE_LITERAL | DOUBLE_QUOTE_LITERAL | IDENTIFIER | XML_TEXT | DIV | SEMI | RCURLY | LPAREN | RPAREN | LBRACK | RBRACK | DOT | COMMA | GT | LTE | EQ | NEQ | SAME | NSAME | PLUS | SUB | STAR | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | UNDERSCORE | DOLLAR | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | SHL_ASSIGN | SHR_ASSIGN | SHU_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN | ELLIPSIS | XML_ELLIPSIS | XML_NS_OP | XML_AT ) );
    public final AS3Parser.xmlTextElement_return xmlTextElement() throws RecognitionException {
        AS3Parser.xmlTextElement_return retval = new AS3Parser.xmlTextElement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token lexToken=null;
        AS3Parser.allKeywords_return allKeywords26 = null;


        Object lexToken_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:839:2: ( allKeywords | lexToken= ( DEC_NUMBER_LITERAL | HEX_NUMBER_LITERAL | SINGLE_QUOTE_LITERAL | DOUBLE_QUOTE_LITERAL | IDENTIFIER | XML_TEXT | DIV | SEMI | RCURLY | LPAREN | RPAREN | LBRACK | RBRACK | DOT | COMMA | GT | LTE | EQ | NEQ | SAME | NSAME | PLUS | SUB | STAR | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | UNDERSCORE | DOLLAR | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | SHL_ASSIGN | SHR_ASSIGN | SHU_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN | ELLIPSIS | XML_ELLIPSIS | XML_NS_OP | XML_AT ) )
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( ((LA7_0>=AS && LA7_0<=STATIC)) ) {
                alt7=1;
            }
            else if ( (LA7_0==SEMI||(LA7_0>=RCURLY && LA7_0<=COMMA)||(LA7_0>=GT && LA7_0<=LTE)||(LA7_0>=EQ && LA7_0<=XML_ELLIPSIS)||(LA7_0>=XML_NS_OP && LA7_0<=XML_AT)||(LA7_0>=SINGLE_QUOTE_LITERAL && LA7_0<=DOUBLE_QUOTE_LITERAL)||LA7_0==HEX_NUMBER_LITERAL||LA7_0==DEC_NUMBER_LITERAL||LA7_0==IDENTIFIER||LA7_0==XML_TEXT) ) {
                alt7=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }
            switch (alt7) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:839:4: allKeywords
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_allKeywords_in_xmlTextElement2708);
                    allKeywords26=allKeywords();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, allKeywords26.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:839:18: lexToken= ( DEC_NUMBER_LITERAL | HEX_NUMBER_LITERAL | SINGLE_QUOTE_LITERAL | DOUBLE_QUOTE_LITERAL | IDENTIFIER | XML_TEXT | DIV | SEMI | RCURLY | LPAREN | RPAREN | LBRACK | RBRACK | DOT | COMMA | GT | LTE | EQ | NEQ | SAME | NSAME | PLUS | SUB | STAR | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | UNDERSCORE | DOLLAR | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | SHL_ASSIGN | SHR_ASSIGN | SHU_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN | ELLIPSIS | XML_ELLIPSIS | XML_NS_OP | XML_AT )
                    {
                    root_0 = (Object)adaptor.nil();

                    lexToken=(Token)input.LT(1);
                    if ( input.LA(1)==SEMI||(input.LA(1)>=RCURLY && input.LA(1)<=COMMA)||(input.LA(1)>=GT && input.LA(1)<=LTE)||(input.LA(1)>=EQ && input.LA(1)<=XML_ELLIPSIS)||(input.LA(1)>=XML_NS_OP && input.LA(1)<=XML_AT)||(input.LA(1)>=SINGLE_QUOTE_LITERAL && input.LA(1)<=DOUBLE_QUOTE_LITERAL)||input.LA(1)==HEX_NUMBER_LITERAL||input.LA(1)==DEC_NUMBER_LITERAL||input.LA(1)==IDENTIFIER||input.LA(1)==XML_TEXT ) {
                        input.consume();
                        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(lexToken));
                        state.errorRecovery=false;state.failed=false;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }

                    if ( state.backtracking==0 ) {
                       lexToken.setType(XML_TEXT); 
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlTextElement"

    public static class xmlText_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlText"
    // com/shin1ogawa/as3/AS3.g:860:1: xmlText : ( XML_TEXT | xmlTextElement )+ ;
    public final AS3Parser.xmlText_return xmlText() throws RecognitionException {
        AS3Parser.xmlText_return retval = new AS3Parser.xmlText_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_TEXT27=null;
        AS3Parser.xmlTextElement_return xmlTextElement28 = null;


        Object XML_TEXT27_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:861:2: ( ( XML_TEXT | xmlTextElement )+ )
            // com/shin1ogawa/as3/AS3.g:861:4: ( XML_TEXT | xmlTextElement )+
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:861:4: ( XML_TEXT | xmlTextElement )+
            int cnt8=0;
            loop8:
            do {
                int alt8=3;
                switch ( input.LA(1) ) {
                case XML_TEXT:
                    {
                    int LA8_2 = input.LA(2);

                    if ( (synpred71_AS3()) ) {
                        alt8=1;
                    }
                    else if ( (synpred72_AS3()) ) {
                        alt8=2;
                    }


                    }
                    break;
                case AS:
                case BREAK:
                case CASE:
                case CATCH:
                case CLASS:
                case CONST:
                case CONTINUE:
                case DEFAULT:
                case DELETE:
                case DO:
                case ELSE:
                case EXTENDS:
                case FALSE:
                case FINALLY:
                case FOR:
                case FUNCTION:
                case IF:
                case IMPLEMENTS:
                case IMPORT:
                case IN:
                case INSTANCEOF:
                case INTERFACE:
                case INTERNAL:
                case IS:
                case NEW:
                case NULL:
                case PACKAGE:
                case PRIVATE:
                case PROTECTED:
                case PUBLIC:
                case RETURN:
                case SUPER:
                case SWITCH:
                case THIS:
                case THROW:
                case TRUE:
                case TRY:
                case TYPEOF:
                case USE:
                case VAR:
                case VOID:
                case WHILE:
                case WITH:
                case INCLUDE:
                    {
                    int LA8_3 = input.LA(2);

                    if ( (synpred72_AS3()) ) {
                        alt8=2;
                    }


                    }
                    break;
                case NATIVE:
                case TO:
                case EACH:
                case GET:
                case SET:
                case NAMESPACE:
                case DYNAMIC:
                case FINAL:
                case OVERRIDE:
                case STATIC:
                    {
                    int LA8_4 = input.LA(2);

                    if ( (synpred72_AS3()) ) {
                        alt8=2;
                    }


                    }
                    break;
                case SEMI:
                case RCURLY:
                case LPAREN:
                case RPAREN:
                case LBRACK:
                case RBRACK:
                case DOT:
                case COMMA:
                case GT:
                case LTE:
                case EQ:
                case NEQ:
                case SAME:
                case NSAME:
                case PLUS:
                case SUB:
                case STAR:
                case DIV:
                case MOD:
                case INC:
                case DEC:
                case SHL:
                case SHR:
                case SHU:
                case AND:
                case OR:
                case XOR:
                case NOT:
                case INV:
                case LAND:
                case LOR:
                case QUE:
                case COLON:
                case ASSIGN:
                case UNDERSCORE:
                case DOLLAR:
                case MUL_ASSIGN:
                case DIV_ASSIGN:
                case MOD_ASSIGN:
                case ADD_ASSIGN:
                case SUB_ASSIGN:
                case SHL_ASSIGN:
                case SHR_ASSIGN:
                case SHU_ASSIGN:
                case AND_ASSIGN:
                case XOR_ASSIGN:
                case OR_ASSIGN:
                case ELLIPSIS:
                case XML_ELLIPSIS:
                case XML_NS_OP:
                case XML_AT:
                case SINGLE_QUOTE_LITERAL:
                case DOUBLE_QUOTE_LITERAL:
                case HEX_NUMBER_LITERAL:
                case DEC_NUMBER_LITERAL:
                case IDENTIFIER:
                    {
                    int LA8_5 = input.LA(2);

                    if ( (synpred72_AS3()) ) {
                        alt8=2;
                    }


                    }
                    break;

                }

                switch (alt8) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:861:5: XML_TEXT
            	    {
            	    XML_TEXT27=(Token)match(input,XML_TEXT,FOLLOW_XML_TEXT_in_xmlText2977); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    XML_TEXT27_tree = (Object)adaptor.create(XML_TEXT27);
            	    adaptor.addChild(root_0, XML_TEXT27_tree);
            	    }

            	    }
            	    break;
            	case 2 :
            	    // com/shin1ogawa/as3/AS3.g:861:16: xmlTextElement
            	    {
            	    pushFollow(FOLLOW_xmlTextElement_in_xmlText2981);
            	    xmlTextElement28=xmlTextElement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlTextElement28.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlText"

    public static class xmlPrimaryExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlPrimaryExpression"
    // com/shin1ogawa/as3/AS3.g:865:1: xmlPrimaryExpression : ( xmlPropertyIdentifier | xmlInitialiser | xmlListInitialiser );
    public final AS3Parser.xmlPrimaryExpression_return xmlPrimaryExpression() throws RecognitionException {
        AS3Parser.xmlPrimaryExpression_return retval = new AS3Parser.xmlPrimaryExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlPropertyIdentifier_return xmlPropertyIdentifier29 = null;

        AS3Parser.xmlInitialiser_return xmlInitialiser30 = null;

        AS3Parser.xmlListInitialiser_return xmlListInitialiser31 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:866:2: ( xmlPropertyIdentifier | xmlInitialiser | xmlListInitialiser )
            int alt9=3;
            switch ( input.LA(1) ) {
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NATIVE:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TO:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VAR:
            case VOID:
            case WHILE:
            case WITH:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case INCLUDE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
            case STAR:
            case XML_AT:
            case IDENTIFIER:
                {
                alt9=1;
                }
                break;
            case LT:
            case XML_COMMENT:
            case XML_CDATA:
            case XML_PI:
                {
                alt9=2;
                }
                break;
            case XML_LS_STD:
                {
                alt9=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:866:4: xmlPropertyIdentifier
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlPropertyIdentifier_in_xmlPrimaryExpression2996);
                    xmlPropertyIdentifier29=xmlPropertyIdentifier();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPropertyIdentifier29.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:866:28: xmlInitialiser
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlInitialiser_in_xmlPrimaryExpression3000);
                    xmlInitialiser30=xmlInitialiser();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlInitialiser30.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:866:45: xmlListInitialiser
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlListInitialiser_in_xmlPrimaryExpression3004);
                    xmlListInitialiser31=xmlListInitialiser();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlListInitialiser31.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlPrimaryExpression"

    public static class xmlPropertyIdentifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlPropertyIdentifier"
    // com/shin1ogawa/as3/AS3.g:879:1: xmlPropertyIdentifier : ( xmlAttributeIdentifier | xmlQualifiedIdentifier | STAR );
    public final AS3Parser.xmlPropertyIdentifier_return xmlPropertyIdentifier() throws RecognitionException {
        AS3Parser.xmlPropertyIdentifier_return retval = new AS3Parser.xmlPropertyIdentifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token STAR34=null;
        AS3Parser.xmlAttributeIdentifier_return xmlAttributeIdentifier32 = null;

        AS3Parser.xmlQualifiedIdentifier_return xmlQualifiedIdentifier33 = null;


        Object STAR34_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:880:2: ( xmlAttributeIdentifier | xmlQualifiedIdentifier | STAR )
            int alt10=3;
            alt10 = dfa10.predict(input);
            switch (alt10) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:880:4: xmlAttributeIdentifier
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlAttributeIdentifier_in_xmlPropertyIdentifier3017);
                    xmlAttributeIdentifier32=xmlAttributeIdentifier();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlAttributeIdentifier32.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:880:29: xmlQualifiedIdentifier
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlQualifiedIdentifier_in_xmlPropertyIdentifier3021);
                    xmlQualifiedIdentifier33=xmlQualifiedIdentifier();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlQualifiedIdentifier33.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:880:54: STAR
                    {
                    root_0 = (Object)adaptor.nil();

                    STAR34=(Token)match(input,STAR,FOLLOW_STAR_in_xmlPropertyIdentifier3025); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    STAR34_tree = (Object)adaptor.create(STAR34);
                    adaptor.addChild(root_0, STAR34_tree);
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlPropertyIdentifier"

    public static class xmlAttributeIdentifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlAttributeIdentifier"
    // com/shin1ogawa/as3/AS3.g:883:1: xmlAttributeIdentifier : XML_AT ( xmlPropertySelector | xmlQualifiedIdentifier | indexSuffix ) ;
    public final AS3Parser.xmlAttributeIdentifier_return xmlAttributeIdentifier() throws RecognitionException {
        AS3Parser.xmlAttributeIdentifier_return retval = new AS3Parser.xmlAttributeIdentifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_AT35=null;
        AS3Parser.xmlPropertySelector_return xmlPropertySelector36 = null;

        AS3Parser.xmlQualifiedIdentifier_return xmlQualifiedIdentifier37 = null;

        AS3Parser.indexSuffix_return indexSuffix38 = null;


        Object XML_AT35_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:884:2: ( XML_AT ( xmlPropertySelector | xmlQualifiedIdentifier | indexSuffix ) )
            // com/shin1ogawa/as3/AS3.g:884:4: XML_AT ( xmlPropertySelector | xmlQualifiedIdentifier | indexSuffix )
            {
            root_0 = (Object)adaptor.nil();

            XML_AT35=(Token)match(input,XML_AT,FOLLOW_XML_AT_in_xmlAttributeIdentifier3036); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_AT35_tree = (Object)adaptor.create(XML_AT35);
            adaptor.addChild(root_0, XML_AT35_tree);
            }
            // com/shin1ogawa/as3/AS3.g:884:11: ( xmlPropertySelector | xmlQualifiedIdentifier | indexSuffix )
            int alt11=3;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                int LA11_1 = input.LA(2);

                if ( (synpred77_AS3()) ) {
                    alt11=1;
                }
                else if ( (synpred78_AS3()) ) {
                    alt11=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 1, input);

                    throw nvae;
                }
                }
                break;
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VAR:
            case VOID:
            case WHILE:
            case WITH:
            case INCLUDE:
                {
                int LA11_2 = input.LA(2);

                if ( (synpred77_AS3()) ) {
                    alt11=1;
                }
                else if ( (synpred78_AS3()) ) {
                    alt11=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 2, input);

                    throw nvae;
                }
                }
                break;
            case NATIVE:
            case TO:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
                {
                int LA11_3 = input.LA(2);

                if ( (synpred77_AS3()) ) {
                    alt11=1;
                }
                else if ( (synpred78_AS3()) ) {
                    alt11=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 3, input);

                    throw nvae;
                }
                }
                break;
            case STAR:
                {
                int LA11_4 = input.LA(2);

                if ( (synpred77_AS3()) ) {
                    alt11=1;
                }
                else if ( (synpred78_AS3()) ) {
                    alt11=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 4, input);

                    throw nvae;
                }
                }
                break;
            case LBRACK:
                {
                alt11=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:884:12: xmlPropertySelector
                    {
                    pushFollow(FOLLOW_xmlPropertySelector_in_xmlAttributeIdentifier3039);
                    xmlPropertySelector36=xmlPropertySelector();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPropertySelector36.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:884:34: xmlQualifiedIdentifier
                    {
                    pushFollow(FOLLOW_xmlQualifiedIdentifier_in_xmlAttributeIdentifier3043);
                    xmlQualifiedIdentifier37=xmlQualifiedIdentifier();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlQualifiedIdentifier37.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:884:59: indexSuffix
                    {
                    pushFollow(FOLLOW_indexSuffix_in_xmlAttributeIdentifier3047);
                    indexSuffix38=indexSuffix();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, indexSuffix38.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlAttributeIdentifier"

    public static class xmlPropertySelector_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlPropertySelector"
    // com/shin1ogawa/as3/AS3.g:887:1: xmlPropertySelector : ( xmlNameLiteral | STAR );
    public final AS3Parser.xmlPropertySelector_return xmlPropertySelector() throws RecognitionException {
        AS3Parser.xmlPropertySelector_return retval = new AS3Parser.xmlPropertySelector_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token STAR40=null;
        AS3Parser.xmlNameLiteral_return xmlNameLiteral39 = null;


        Object STAR40_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:888:2: ( xmlNameLiteral | STAR )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( ((LA12_0>=AS && LA12_0<=STATIC)||LA12_0==IDENTIFIER) ) {
                alt12=1;
            }
            else if ( (LA12_0==STAR) ) {
                alt12=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:888:4: xmlNameLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlNameLiteral_in_xmlPropertySelector3060);
                    xmlNameLiteral39=xmlNameLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlNameLiteral39.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:888:21: STAR
                    {
                    root_0 = (Object)adaptor.nil();

                    STAR40=(Token)match(input,STAR,FOLLOW_STAR_in_xmlPropertySelector3064); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    STAR40_tree = (Object)adaptor.create(STAR40);
                    adaptor.addChild(root_0, STAR40_tree);
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlPropertySelector"

    public static class xmlQualifiedIdentifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlQualifiedIdentifier"
    // com/shin1ogawa/as3/AS3.g:891:1: xmlQualifiedIdentifier : xmlPropertySelector XML_NS_OP ( xmlPropertySelector | indexSuffix ) ;
    public final AS3Parser.xmlQualifiedIdentifier_return xmlQualifiedIdentifier() throws RecognitionException {
        AS3Parser.xmlQualifiedIdentifier_return retval = new AS3Parser.xmlQualifiedIdentifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_NS_OP42=null;
        AS3Parser.xmlPropertySelector_return xmlPropertySelector41 = null;

        AS3Parser.xmlPropertySelector_return xmlPropertySelector43 = null;

        AS3Parser.indexSuffix_return indexSuffix44 = null;


        Object XML_NS_OP42_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:892:2: ( xmlPropertySelector XML_NS_OP ( xmlPropertySelector | indexSuffix ) )
            // com/shin1ogawa/as3/AS3.g:892:4: xmlPropertySelector XML_NS_OP ( xmlPropertySelector | indexSuffix )
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_xmlPropertySelector_in_xmlQualifiedIdentifier3075);
            xmlPropertySelector41=xmlPropertySelector();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPropertySelector41.getTree());
            XML_NS_OP42=(Token)match(input,XML_NS_OP,FOLLOW_XML_NS_OP_in_xmlQualifiedIdentifier3077); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_NS_OP42_tree = (Object)adaptor.create(XML_NS_OP42);
            adaptor.addChild(root_0, XML_NS_OP42_tree);
            }
            // com/shin1ogawa/as3/AS3.g:892:34: ( xmlPropertySelector | indexSuffix )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( ((LA13_0>=AS && LA13_0<=STATIC)||LA13_0==STAR||LA13_0==IDENTIFIER) ) {
                alt13=1;
            }
            else if ( (LA13_0==LBRACK) ) {
                alt13=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:892:35: xmlPropertySelector
                    {
                    pushFollow(FOLLOW_xmlPropertySelector_in_xmlQualifiedIdentifier3080);
                    xmlPropertySelector43=xmlPropertySelector();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPropertySelector43.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:892:57: indexSuffix
                    {
                    pushFollow(FOLLOW_indexSuffix_in_xmlQualifiedIdentifier3084);
                    indexSuffix44=indexSuffix();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, indexSuffix44.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlQualifiedIdentifier"

    public static class xmlInitialiser_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlInitialiser"
    // com/shin1ogawa/as3/AS3.g:895:1: xmlInitialiser : ( xmlMarkup | xmlElement );
    public final AS3Parser.xmlInitialiser_return xmlInitialiser() throws RecognitionException {
        AS3Parser.xmlInitialiser_return retval = new AS3Parser.xmlInitialiser_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlMarkup_return xmlMarkup45 = null;

        AS3Parser.xmlElement_return xmlElement46 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:896:2: ( xmlMarkup | xmlElement )
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( ((LA14_0>=XML_COMMENT && LA14_0<=XML_PI)) ) {
                alt14=1;
            }
            else if ( (LA14_0==LT) ) {
                alt14=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }
            switch (alt14) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:896:4: xmlMarkup
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlMarkup_in_xmlInitialiser3096);
                    xmlMarkup45=xmlMarkup();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlMarkup45.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:896:16: xmlElement
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlElement_in_xmlInitialiser3100);
                    xmlElement46=xmlElement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlElement46.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlInitialiser"

    public static class xmlElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlElement"
    // com/shin1ogawa/as3/AS3.g:899:1: xmlElement : LT xmlTagName ( xmlAttributes )? ( XML_TEND | GT ( xmlElementContent )? XML_E_TEND xmlTagName GT ) ;
    public final AS3Parser.xmlElement_return xmlElement() throws RecognitionException {
        AS3Parser.xmlElement_return retval = new AS3Parser.xmlElement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LT47=null;
        Token XML_TEND50=null;
        Token GT51=null;
        Token XML_E_TEND53=null;
        Token GT55=null;
        AS3Parser.xmlTagName_return xmlTagName48 = null;

        AS3Parser.xmlAttributes_return xmlAttributes49 = null;

        AS3Parser.xmlElementContent_return xmlElementContent52 = null;

        AS3Parser.xmlTagName_return xmlTagName54 = null;


        Object LT47_tree=null;
        Object XML_TEND50_tree=null;
        Object GT51_tree=null;
        Object XML_E_TEND53_tree=null;
        Object GT55_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:900:2: ( LT xmlTagName ( xmlAttributes )? ( XML_TEND | GT ( xmlElementContent )? XML_E_TEND xmlTagName GT ) )
            // com/shin1ogawa/as3/AS3.g:900:4: LT xmlTagName ( xmlAttributes )? ( XML_TEND | GT ( xmlElementContent )? XML_E_TEND xmlTagName GT )
            {
            root_0 = (Object)adaptor.nil();

            LT47=(Token)match(input,LT,FOLLOW_LT_in_xmlElement3112); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LT47_tree = (Object)adaptor.create(LT47);
            adaptor.addChild(root_0, LT47_tree);
            }
            pushFollow(FOLLOW_xmlTagName_in_xmlElement3114);
            xmlTagName48=xmlTagName();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlTagName48.getTree());
            // com/shin1ogawa/as3/AS3.g:900:18: ( xmlAttributes )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( ((LA15_0>=AS && LA15_0<=STATIC)||LA15_0==IDENTIFIER) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: xmlAttributes
                    {
                    pushFollow(FOLLOW_xmlAttributes_in_xmlElement3116);
                    xmlAttributes49=xmlAttributes();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlAttributes49.getTree());

                    }
                    break;

            }

            // com/shin1ogawa/as3/AS3.g:901:2: ( XML_TEND | GT ( xmlElementContent )? XML_E_TEND xmlTagName GT )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==XML_TEND) ) {
                alt17=1;
            }
            else if ( (LA17_0==GT) ) {
                alt17=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:901:3: XML_TEND
                    {
                    XML_TEND50=(Token)match(input,XML_TEND,FOLLOW_XML_TEND_in_xmlElement3122); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    XML_TEND50_tree = (Object)adaptor.create(XML_TEND50);
                    adaptor.addChild(root_0, XML_TEND50_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:901:14: GT ( xmlElementContent )? XML_E_TEND xmlTagName GT
                    {
                    GT51=(Token)match(input,GT,FOLLOW_GT_in_xmlElement3126); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    GT51_tree = (Object)adaptor.create(GT51);
                    adaptor.addChild(root_0, GT51_tree);
                    }
                    // com/shin1ogawa/as3/AS3.g:901:17: ( xmlElementContent )?
                    int alt16=2;
                    int LA16_0 = input.LA(1);

                    if ( ((LA16_0>=AS && LA16_0<=LTE)||(LA16_0>=EQ && LA16_0<=XML_ELLIPSIS)||(LA16_0>=XML_NS_OP && LA16_0<=XML_AT)||(LA16_0>=SINGLE_QUOTE_LITERAL && LA16_0<=DOUBLE_QUOTE_LITERAL)||LA16_0==HEX_NUMBER_LITERAL||LA16_0==DEC_NUMBER_LITERAL||LA16_0==IDENTIFIER||(LA16_0>=XML_COMMENT && LA16_0<=XML_TEXT)) ) {
                        alt16=1;
                    }
                    switch (alt16) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: xmlElementContent
                            {
                            pushFollow(FOLLOW_xmlElementContent_in_xmlElement3128);
                            xmlElementContent52=xmlElementContent();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlElementContent52.getTree());

                            }
                            break;

                    }

                    XML_E_TEND53=(Token)match(input,XML_E_TEND,FOLLOW_XML_E_TEND_in_xmlElement3131); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    XML_E_TEND53_tree = (Object)adaptor.create(XML_E_TEND53);
                    adaptor.addChild(root_0, XML_E_TEND53_tree);
                    }
                    pushFollow(FOLLOW_xmlTagName_in_xmlElement3133);
                    xmlTagName54=xmlTagName();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlTagName54.getTree());
                    GT55=(Token)match(input,GT,FOLLOW_GT_in_xmlElement3135); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    GT55_tree = (Object)adaptor.create(GT55);
                    adaptor.addChild(root_0, GT55_tree);
                    }

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlElement"

    public static class xmlAttributes_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlAttributes"
    // com/shin1ogawa/as3/AS3.g:904:1: xmlAttributes : ( xmlAttribute )+ ;
    public final AS3Parser.xmlAttributes_return xmlAttributes() throws RecognitionException {
        AS3Parser.xmlAttributes_return retval = new AS3Parser.xmlAttributes_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlAttribute_return xmlAttribute56 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:905:2: ( ( xmlAttribute )+ )
            // com/shin1ogawa/as3/AS3.g:905:4: ( xmlAttribute )+
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:905:4: ( xmlAttribute )+
            int cnt18=0;
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( ((LA18_0>=AS && LA18_0<=STATIC)||LA18_0==IDENTIFIER) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: xmlAttribute
            	    {
            	    pushFollow(FOLLOW_xmlAttribute_in_xmlAttributes3148);
            	    xmlAttribute56=xmlAttribute();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlAttribute56.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlAttributes"

    public static class xmlTagName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlTagName"
    // com/shin1ogawa/as3/AS3.g:908:1: xmlTagName : ( xmlExprEval | xmlNameLiteral );
    public final AS3Parser.xmlTagName_return xmlTagName() throws RecognitionException {
        AS3Parser.xmlTagName_return retval = new AS3Parser.xmlTagName_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlExprEval_return xmlExprEval57 = null;

        AS3Parser.xmlNameLiteral_return xmlNameLiteral58 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:909:2: ( xmlExprEval | xmlNameLiteral )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==LCURLY) ) {
                alt19=1;
            }
            else if ( ((LA19_0>=AS && LA19_0<=STATIC)||LA19_0==IDENTIFIER) ) {
                alt19=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:909:4: xmlExprEval
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlExprEval_in_xmlTagName3160);
                    xmlExprEval57=xmlExprEval();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlExprEval57.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:909:18: xmlNameLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlNameLiteral_in_xmlTagName3164);
                    xmlNameLiteral58=xmlNameLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlNameLiteral58.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlTagName"

    public static class xmlAttribute_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlAttribute"
    // com/shin1ogawa/as3/AS3.g:912:1: xmlAttribute : {...}? xmlNameLiteral ASSIGN ( xmlExprEval | stringLiteral ) ;
    public final AS3Parser.xmlAttribute_return xmlAttribute() throws RecognitionException {
        AS3Parser.xmlAttribute_return retval = new AS3Parser.xmlAttribute_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token ASSIGN60=null;
        AS3Parser.xmlNameLiteral_return xmlNameLiteral59 = null;

        AS3Parser.xmlExprEval_return xmlExprEval61 = null;

        AS3Parser.stringLiteral_return stringLiteral62 = null;


        Object ASSIGN60_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:913:2: ({...}? xmlNameLiteral ASSIGN ( xmlExprEval | stringLiteral ) )
            // com/shin1ogawa/as3/AS3.g:913:4: {...}? xmlNameLiteral ASSIGN ( xmlExprEval | stringLiteral )
            {
            root_0 = (Object)adaptor.nil();

            if ( !((promoteWhitespace(null))) ) {
                if (state.backtracking>0) {state.failed=true; return retval;}
                throw new FailedPredicateException(input, "xmlAttribute", "promoteWhitespace(null)");
            }
            pushFollow(FOLLOW_xmlNameLiteral_in_xmlAttribute3178);
            xmlNameLiteral59=xmlNameLiteral();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlNameLiteral59.getTree());
            ASSIGN60=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_xmlAttribute3180); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            ASSIGN60_tree = (Object)adaptor.create(ASSIGN60);
            adaptor.addChild(root_0, ASSIGN60_tree);
            }
            // com/shin1ogawa/as3/AS3.g:913:53: ( xmlExprEval | stringLiteral )
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==LCURLY) ) {
                alt20=1;
            }
            else if ( ((LA20_0>=SINGLE_QUOTE_LITERAL && LA20_0<=DOUBLE_QUOTE_LITERAL)) ) {
                alt20=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }
            switch (alt20) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:913:54: xmlExprEval
                    {
                    pushFollow(FOLLOW_xmlExprEval_in_xmlAttribute3183);
                    xmlExprEval61=xmlExprEval();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlExprEval61.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:913:68: stringLiteral
                    {
                    pushFollow(FOLLOW_stringLiteral_in_xmlAttribute3187);
                    stringLiteral62=stringLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, stringLiteral62.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlAttribute"

    public static class xmlElementContent_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlElementContent"
    // com/shin1ogawa/as3/AS3.g:916:1: xmlElementContent : ( xmlElementContentHelper )+ ;
    public final AS3Parser.xmlElementContent_return xmlElementContent() throws RecognitionException {
        AS3Parser.xmlElementContent_return retval = new AS3Parser.xmlElementContent_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlElementContentHelper_return xmlElementContentHelper63 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:917:2: ( ( xmlElementContentHelper )+ )
            // com/shin1ogawa/as3/AS3.g:917:4: ( xmlElementContentHelper )+
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:917:4: ( xmlElementContentHelper )+
            int cnt21=0;
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( ((LA21_0>=AS && LA21_0<=LTE)||(LA21_0>=EQ && LA21_0<=XML_ELLIPSIS)||(LA21_0>=XML_NS_OP && LA21_0<=XML_AT)||(LA21_0>=SINGLE_QUOTE_LITERAL && LA21_0<=DOUBLE_QUOTE_LITERAL)||LA21_0==HEX_NUMBER_LITERAL||LA21_0==DEC_NUMBER_LITERAL||LA21_0==IDENTIFIER||(LA21_0>=XML_COMMENT && LA21_0<=XML_TEXT)) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: xmlElementContentHelper
            	    {
            	    pushFollow(FOLLOW_xmlElementContentHelper_in_xmlElementContent3199);
            	    xmlElementContentHelper63=xmlElementContentHelper();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlElementContentHelper63.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlElementContent"

    public static class xmlElementContentHelper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlElementContentHelper"
    // com/shin1ogawa/as3/AS3.g:920:1: xmlElementContentHelper : ( xmlExprEval | xmlMarkup | xmlElement | xmlText );
    public final AS3Parser.xmlElementContentHelper_return xmlElementContentHelper() throws RecognitionException {
        AS3Parser.xmlElementContentHelper_return retval = new AS3Parser.xmlElementContentHelper_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.xmlExprEval_return xmlExprEval64 = null;

        AS3Parser.xmlMarkup_return xmlMarkup65 = null;

        AS3Parser.xmlElement_return xmlElement66 = null;

        AS3Parser.xmlText_return xmlText67 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:921:2: ( xmlExprEval | xmlMarkup | xmlElement | xmlText )
            int alt22=4;
            switch ( input.LA(1) ) {
            case LCURLY:
                {
                alt22=1;
                }
                break;
            case XML_COMMENT:
            case XML_CDATA:
            case XML_PI:
                {
                alt22=2;
                }
                break;
            case LT:
                {
                alt22=3;
                }
                break;
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NATIVE:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TO:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VAR:
            case VOID:
            case WHILE:
            case WITH:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case INCLUDE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
            case SEMI:
            case RCURLY:
            case LPAREN:
            case RPAREN:
            case LBRACK:
            case RBRACK:
            case DOT:
            case COMMA:
            case GT:
            case LTE:
            case EQ:
            case NEQ:
            case SAME:
            case NSAME:
            case PLUS:
            case SUB:
            case STAR:
            case DIV:
            case MOD:
            case INC:
            case DEC:
            case SHL:
            case SHR:
            case SHU:
            case AND:
            case OR:
            case XOR:
            case NOT:
            case INV:
            case LAND:
            case LOR:
            case QUE:
            case COLON:
            case ASSIGN:
            case UNDERSCORE:
            case DOLLAR:
            case MUL_ASSIGN:
            case DIV_ASSIGN:
            case MOD_ASSIGN:
            case ADD_ASSIGN:
            case SUB_ASSIGN:
            case SHL_ASSIGN:
            case SHR_ASSIGN:
            case SHU_ASSIGN:
            case AND_ASSIGN:
            case XOR_ASSIGN:
            case OR_ASSIGN:
            case ELLIPSIS:
            case XML_ELLIPSIS:
            case XML_NS_OP:
            case XML_AT:
            case SINGLE_QUOTE_LITERAL:
            case DOUBLE_QUOTE_LITERAL:
            case HEX_NUMBER_LITERAL:
            case DEC_NUMBER_LITERAL:
            case IDENTIFIER:
            case XML_TEXT:
                {
                alt22=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }

            switch (alt22) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:921:4: xmlExprEval
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlExprEval_in_xmlElementContentHelper3211);
                    xmlExprEval64=xmlExprEval();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlExprEval64.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:921:18: xmlMarkup
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlMarkup_in_xmlElementContentHelper3215);
                    xmlMarkup65=xmlMarkup();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlMarkup65.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:921:30: xmlElement
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlElement_in_xmlElementContentHelper3219);
                    xmlElement66=xmlElement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlElement66.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:921:43: xmlText
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlText_in_xmlElementContentHelper3223);
                    xmlText67=xmlText();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlText67.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlElementContentHelper"

    public static class xmlListInitialiser_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlListInitialiser"
    // com/shin1ogawa/as3/AS3.g:924:1: xmlListInitialiser : XML_LS_STD ( xmlElementContent )? XML_LS_END ;
    public final AS3Parser.xmlListInitialiser_return xmlListInitialiser() throws RecognitionException {
        AS3Parser.xmlListInitialiser_return retval = new AS3Parser.xmlListInitialiser_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XML_LS_STD68=null;
        Token XML_LS_END70=null;
        AS3Parser.xmlElementContent_return xmlElementContent69 = null;


        Object XML_LS_STD68_tree=null;
        Object XML_LS_END70_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:925:2: ( XML_LS_STD ( xmlElementContent )? XML_LS_END )
            // com/shin1ogawa/as3/AS3.g:925:4: XML_LS_STD ( xmlElementContent )? XML_LS_END
            {
            root_0 = (Object)adaptor.nil();

            XML_LS_STD68=(Token)match(input,XML_LS_STD,FOLLOW_XML_LS_STD_in_xmlListInitialiser3234); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_LS_STD68_tree = (Object)adaptor.create(XML_LS_STD68);
            adaptor.addChild(root_0, XML_LS_STD68_tree);
            }
            // com/shin1ogawa/as3/AS3.g:925:15: ( xmlElementContent )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( ((LA23_0>=AS && LA23_0<=LTE)||(LA23_0>=EQ && LA23_0<=XML_ELLIPSIS)||(LA23_0>=XML_NS_OP && LA23_0<=XML_AT)||(LA23_0>=SINGLE_QUOTE_LITERAL && LA23_0<=DOUBLE_QUOTE_LITERAL)||LA23_0==HEX_NUMBER_LITERAL||LA23_0==DEC_NUMBER_LITERAL||LA23_0==IDENTIFIER||(LA23_0>=XML_COMMENT && LA23_0<=XML_TEXT)) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: xmlElementContent
                    {
                    pushFollow(FOLLOW_xmlElementContent_in_xmlListInitialiser3236);
                    xmlElementContent69=xmlElementContent();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlElementContent69.getTree());

                    }
                    break;

            }

            XML_LS_END70=(Token)match(input,XML_LS_END,FOLLOW_XML_LS_END_in_xmlListInitialiser3239); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            XML_LS_END70_tree = (Object)adaptor.create(XML_LS_END70);
            adaptor.addChild(root_0, XML_LS_END70_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlListInitialiser"

    public static class semic_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "semic"
    // com/shin1ogawa/as3/AS3.g:930:1: semic : ( SEMI | EOF | RCURLY );
    public final AS3Parser.semic_return semic() throws RecognitionException {
        AS3Parser.semic_return retval = new AS3Parser.semic_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token SEMI71=null;
        Token EOF72=null;
        Token RCURLY73=null;

        Object SEMI71_tree=null;
        Object EOF72_tree=null;
        Object RCURLY73_tree=null;


        		// Mark current position so we can unconsume a RBRACE.
        		int marker = input.mark();
        		// Promote EOL if appropriate
        		boolean onBrace = false;
        		if (retval.start.getText() != null
        				&& retval.start.getText().equals("}")) {
        			onBrace = true;
        			if (state.backtracking > 0) {
        				retval.stop = retval.start;
        				return retval; // we don't want to consume the '}' during the
        								// prediction phase
        			}
        		}

        		if (findVirtualHiddenToken(retval)) {
        			retval.stop = retval.start;
        			return retval;
        		}

        		// promoteEOL(retval);

        try {
            // com/shin1ogawa/as3/AS3.g:954:2: ( SEMI | EOF | RCURLY )
            int alt24=3;
            switch ( input.LA(1) ) {
            case SEMI:
                {
                alt24=1;
                }
                break;
            case EOF:
                {
                alt24=2;
                }
                break;
            case RCURLY:
                {
                alt24=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:954:4: SEMI
                    {
                    root_0 = (Object)adaptor.nil();

                    SEMI71=(Token)match(input,SEMI,FOLLOW_SEMI_in_semic3257); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    SEMI71_tree = (Object)adaptor.create(SEMI71);
                    adaptor.addChild(root_0, SEMI71_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:954:11: EOF
                    {
                    root_0 = (Object)adaptor.nil();

                    EOF72=(Token)match(input,EOF,FOLLOW_EOF_in_semic3261); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    EOF72_tree = (Object)adaptor.create(EOF72);
                    adaptor.addChild(root_0, EOF72_tree);
                    }

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:954:17: RCURLY
                    {
                    root_0 = (Object)adaptor.nil();

                    RCURLY73=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_semic3265); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    RCURLY73_tree = (Object)adaptor.create(RCURLY73);
                    adaptor.addChild(root_0, RCURLY73_tree);
                    }
                    if ( state.backtracking==0 ) {

                      			input.rewind(marker);
                      			if (onBrace)
                      				retval.start=input.LT(-1);
                      		
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "semic"

    public static class fileContents_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "fileContents"
    // com/shin1ogawa/as3/AS3.g:963:1: fileContents : ( ( ( packageDeclaration )? ( packageElement )* ) | EOF );
    public final AS3Parser.fileContents_return fileContents() throws RecognitionException {
        AS3Parser.fileContents_return retval = new AS3Parser.fileContents_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token EOF76=null;
        AS3Parser.packageDeclaration_return packageDeclaration74 = null;

        AS3Parser.packageElement_return packageElement75 = null;


        Object EOF76_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:964:2: ( ( ( packageDeclaration )? ( packageElement )* ) | EOF )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( ((LA27_0>=AS && LA27_0<=LCURLY)||LA27_0==LPAREN||LA27_0==LBRACK||LA27_0==LT||(LA27_0>=PLUS && LA27_0<=STAR)||(LA27_0>=INC && LA27_0<=DEC)||(LA27_0>=NOT && LA27_0<=INV)||(LA27_0>=XML_AT && LA27_0<=XML_LS_STD)||(LA27_0>=SINGLE_QUOTE_LITERAL && LA27_0<=DOUBLE_QUOTE_LITERAL)||LA27_0==REGULAR_EXPR_LITERAL||LA27_0==HEX_NUMBER_LITERAL||LA27_0==DEC_NUMBER_LITERAL||LA27_0==IDENTIFIER||(LA27_0>=XML_COMMENT && LA27_0<=XML_PI)) ) {
                alt27=1;
            }
            else if ( (LA27_0==EOF) ) {
                int LA27_2 = input.LA(2);

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

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

                throw nvae;
            }
            switch (alt27) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:964:4: ( ( packageDeclaration )? ( packageElement )* )
                    {
                    root_0 = (Object)adaptor.nil();

                    // com/shin1ogawa/as3/AS3.g:964:4: ( ( packageDeclaration )? ( packageElement )* )
                    // com/shin1ogawa/as3/AS3.g:964:5: ( packageDeclaration )? ( packageElement )*
                    {
                    // com/shin1ogawa/as3/AS3.g:964:5: ( packageDeclaration )?
                    int alt25=2;
                    int LA25_0 = input.LA(1);

                    if ( (LA25_0==PACKAGE) ) {
                        int LA25_1 = input.LA(2);

                        if ( (LA25_1==VOID||LA25_1==LCURLY||LA25_1==STAR||LA25_1==IDENTIFIER) ) {
                            alt25=1;
                        }
                    }
                    switch (alt25) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: packageDeclaration
                            {
                            pushFollow(FOLLOW_packageDeclaration_in_fileContents3283);
                            packageDeclaration74=packageDeclaration();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) adaptor.addChild(root_0, packageDeclaration74.getTree());

                            }
                            break;

                    }

                    // com/shin1ogawa/as3/AS3.g:964:25: ( packageElement )*
                    loop26:
                    do {
                        int alt26=2;
                        int LA26_0 = input.LA(1);

                        if ( ((LA26_0>=AS && LA26_0<=LCURLY)||LA26_0==LPAREN||LA26_0==LBRACK||LA26_0==LT||(LA26_0>=PLUS && LA26_0<=STAR)||(LA26_0>=INC && LA26_0<=DEC)||(LA26_0>=NOT && LA26_0<=INV)||(LA26_0>=XML_AT && LA26_0<=XML_LS_STD)||(LA26_0>=SINGLE_QUOTE_LITERAL && LA26_0<=DOUBLE_QUOTE_LITERAL)||LA26_0==REGULAR_EXPR_LITERAL||LA26_0==HEX_NUMBER_LITERAL||LA26_0==DEC_NUMBER_LITERAL||LA26_0==IDENTIFIER||(LA26_0>=XML_COMMENT && LA26_0<=XML_PI)) ) {
                            alt26=1;
                        }


                        switch (alt26) {
                    	case 1 :
                    	    // com/shin1ogawa/as3/AS3.g:0:0: packageElement
                    	    {
                    	    pushFollow(FOLLOW_packageElement_in_fileContents3286);
                    	    packageElement75=packageElement();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, packageElement75.getTree());

                    	    }
                    	    break;

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


                    }


                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:965:4: EOF
                    {
                    root_0 = (Object)adaptor.nil();

                    EOF76=(Token)match(input,EOF,FOLLOW_EOF_in_fileContents3294); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    EOF76_tree = (Object)adaptor.create(EOF76);
                    adaptor.addChild(root_0, EOF76_tree);
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "fileContents"

    public static class packageDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "packageDeclaration"
    // com/shin1ogawa/as3/AS3.g:970:1: packageDeclaration : PACKAGE ( type )? LCURLY ( packageElement )* RCURLY ;
    public final AS3Parser.packageDeclaration_return packageDeclaration() throws RecognitionException {
        AS3Parser.packageDeclaration_return retval = new AS3Parser.packageDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token PACKAGE77=null;
        Token LCURLY79=null;
        Token RCURLY81=null;
        AS3Parser.type_return type78 = null;

        AS3Parser.packageElement_return packageElement80 = null;


        Object PACKAGE77_tree=null;
        Object LCURLY79_tree=null;
        Object RCURLY81_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:971:2: ( PACKAGE ( type )? LCURLY ( packageElement )* RCURLY )
            // com/shin1ogawa/as3/AS3.g:971:4: PACKAGE ( type )? LCURLY ( packageElement )* RCURLY
            {
            root_0 = (Object)adaptor.nil();

            PACKAGE77=(Token)match(input,PACKAGE,FOLLOW_PACKAGE_in_packageDeclaration3307); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            PACKAGE77_tree = (Object)adaptor.create(PACKAGE77);
            root_0 = (Object)adaptor.becomeRoot(PACKAGE77_tree, root_0);
            }
            // com/shin1ogawa/as3/AS3.g:971:13: ( type )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==VOID||LA28_0==STAR||LA28_0==IDENTIFIER) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:971:14: type
                    {
                    pushFollow(FOLLOW_type_in_packageDeclaration3311);
                    type78=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, type78.getTree());

                    }
                    break;

            }

            LCURLY79=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_packageDeclaration3315); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY79_tree = (Object)adaptor.create(LCURLY79);
            adaptor.addChild(root_0, LCURLY79_tree);
            }
            // com/shin1ogawa/as3/AS3.g:971:28: ( packageElement )*
            loop29:
            do {
                int alt29=2;
                int LA29_0 = input.LA(1);

                if ( ((LA29_0>=AS && LA29_0<=LCURLY)||LA29_0==LPAREN||LA29_0==LBRACK||LA29_0==LT||(LA29_0>=PLUS && LA29_0<=STAR)||(LA29_0>=INC && LA29_0<=DEC)||(LA29_0>=NOT && LA29_0<=INV)||(LA29_0>=XML_AT && LA29_0<=XML_LS_STD)||(LA29_0>=SINGLE_QUOTE_LITERAL && LA29_0<=DOUBLE_QUOTE_LITERAL)||LA29_0==REGULAR_EXPR_LITERAL||LA29_0==HEX_NUMBER_LITERAL||LA29_0==DEC_NUMBER_LITERAL||LA29_0==IDENTIFIER||(LA29_0>=XML_COMMENT && LA29_0<=XML_PI)) ) {
                    alt29=1;
                }


                switch (alt29) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: packageElement
            	    {
            	    pushFollow(FOLLOW_packageElement_in_packageDeclaration3317);
            	    packageElement80=packageElement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, packageElement80.getTree());

            	    }
            	    break;

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

            RCURLY81=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_packageDeclaration3320); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY81_tree = (Object)adaptor.create(RCURLY81);
            adaptor.addChild(root_0, RCURLY81_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "packageDeclaration"

    public static class mxmlEmbedded_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "mxmlEmbedded"
    // com/shin1ogawa/as3/AS3.g:977:1: mxmlEmbedded : ( ( propertyDeclaration | functionDeclaration | statement | directive | interfaceFunctionDeclaration )* | EOF );
    public final AS3Parser.mxmlEmbedded_return mxmlEmbedded() throws RecognitionException {
        AS3Parser.mxmlEmbedded_return retval = new AS3Parser.mxmlEmbedded_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token EOF87=null;
        AS3Parser.propertyDeclaration_return propertyDeclaration82 = null;

        AS3Parser.functionDeclaration_return functionDeclaration83 = null;

        AS3Parser.statement_return statement84 = null;

        AS3Parser.directive_return directive85 = null;

        AS3Parser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration86 = null;


        Object EOF87_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:978:2: ( ( propertyDeclaration | functionDeclaration | statement | directive | interfaceFunctionDeclaration )* | EOF )
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( ((LA31_0>=AS && LA31_0<=LCURLY)||LA31_0==LPAREN||LA31_0==LBRACK||LA31_0==LT||(LA31_0>=PLUS && LA31_0<=STAR)||(LA31_0>=INC && LA31_0<=DEC)||(LA31_0>=NOT && LA31_0<=INV)||(LA31_0>=XML_AT && LA31_0<=XML_LS_STD)||(LA31_0>=SINGLE_QUOTE_LITERAL && LA31_0<=DOUBLE_QUOTE_LITERAL)||LA31_0==REGULAR_EXPR_LITERAL||LA31_0==HEX_NUMBER_LITERAL||LA31_0==DEC_NUMBER_LITERAL||LA31_0==IDENTIFIER||(LA31_0>=XML_COMMENT && LA31_0<=XML_PI)) ) {
                alt31=1;
            }
            else if ( (LA31_0==EOF) ) {
                int LA31_2 = input.LA(2);

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

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

                throw nvae;
            }
            switch (alt31) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:978:4: ( propertyDeclaration | functionDeclaration | statement | directive | interfaceFunctionDeclaration )*
                    {
                    root_0 = (Object)adaptor.nil();

                    // com/shin1ogawa/as3/AS3.g:978:4: ( propertyDeclaration | functionDeclaration | statement | directive | interfaceFunctionDeclaration )*
                    loop30:
                    do {
                        int alt30=6;
                        alt30 = dfa30.predict(input);
                        switch (alt30) {
                    	case 1 :
                    	    // com/shin1ogawa/as3/AS3.g:978:5: propertyDeclaration
                    	    {
                    	    pushFollow(FOLLOW_propertyDeclaration_in_mxmlEmbedded3335);
                    	    propertyDeclaration82=propertyDeclaration();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyDeclaration82.getTree());

                    	    }
                    	    break;
                    	case 2 :
                    	    // com/shin1ogawa/as3/AS3.g:978:27: functionDeclaration
                    	    {
                    	    pushFollow(FOLLOW_functionDeclaration_in_mxmlEmbedded3339);
                    	    functionDeclaration83=functionDeclaration();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, functionDeclaration83.getTree());

                    	    }
                    	    break;
                    	case 3 :
                    	    // com/shin1ogawa/as3/AS3.g:978:49: statement
                    	    {
                    	    pushFollow(FOLLOW_statement_in_mxmlEmbedded3343);
                    	    statement84=statement();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement84.getTree());

                    	    }
                    	    break;
                    	case 4 :
                    	    // com/shin1ogawa/as3/AS3.g:978:61: directive
                    	    {
                    	    pushFollow(FOLLOW_directive_in_mxmlEmbedded3347);
                    	    directive85=directive();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, directive85.getTree());

                    	    }
                    	    break;
                    	case 5 :
                    	    // com/shin1ogawa/as3/AS3.g:978:73: interfaceFunctionDeclaration
                    	    {
                    	    pushFollow(FOLLOW_interfaceFunctionDeclaration_in_mxmlEmbedded3351);
                    	    interfaceFunctionDeclaration86=interfaceFunctionDeclaration();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceFunctionDeclaration86.getTree());

                    	    }
                    	    break;

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


                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:978:106: EOF
                    {
                    root_0 = (Object)adaptor.nil();

                    EOF87=(Token)match(input,EOF,FOLLOW_EOF_in_mxmlEmbedded3357); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    EOF87_tree = (Object)adaptor.create(EOF87);
                    adaptor.addChild(root_0, EOF87_tree);
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "mxmlEmbedded"

    public static class packageElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "packageElement"
    // com/shin1ogawa/as3/AS3.g:981:1: packageElement : ( classDeclaration | interfaceDeclaration | propertyDeclaration | functionDeclaration | interfaceFunctionDeclaration | statement | directive );
    public final AS3Parser.packageElement_return packageElement() throws RecognitionException {
        AS3Parser.packageElement_return retval = new AS3Parser.packageElement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.classDeclaration_return classDeclaration88 = null;

        AS3Parser.interfaceDeclaration_return interfaceDeclaration89 = null;

        AS3Parser.propertyDeclaration_return propertyDeclaration90 = null;

        AS3Parser.functionDeclaration_return functionDeclaration91 = null;

        AS3Parser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration92 = null;

        AS3Parser.statement_return statement93 = null;

        AS3Parser.directive_return directive94 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:982:2: ( classDeclaration | interfaceDeclaration | propertyDeclaration | functionDeclaration | interfaceFunctionDeclaration | statement | directive )
            int alt32=7;
            alt32 = dfa32.predict(input);
            switch (alt32) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:982:4: classDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_classDeclaration_in_packageElement3368);
                    classDeclaration88=classDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, classDeclaration88.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:982:23: interfaceDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_interfaceDeclaration_in_packageElement3372);
                    interfaceDeclaration89=interfaceDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceDeclaration89.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:983:4: propertyDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_propertyDeclaration_in_packageElement3377);
                    propertyDeclaration90=propertyDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyDeclaration90.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:984:4: functionDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_functionDeclaration_in_packageElement3382);
                    functionDeclaration91=functionDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, functionDeclaration91.getTree());

                    }
                    break;
                case 5 :
                    // com/shin1ogawa/as3/AS3.g:985:4: interfaceFunctionDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_interfaceFunctionDeclaration_in_packageElement3387);
                    interfaceFunctionDeclaration92=interfaceFunctionDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceFunctionDeclaration92.getTree());

                    }
                    break;
                case 6 :
                    // com/shin1ogawa/as3/AS3.g:986:4: statement
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_statement_in_packageElement3392);
                    statement93=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement93.getTree());

                    }
                    break;
                case 7 :
                    // com/shin1ogawa/as3/AS3.g:987:4: directive
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_directive_in_packageElement3397);
                    directive94=directive();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, directive94.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "packageElement"

    public static class importDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "importDeclaration"
    // com/shin1ogawa/as3/AS3.g:990:1: importDeclaration : IMPORT type ( DOT STAR )? semic ;
    public final AS3Parser.importDeclaration_return importDeclaration() throws RecognitionException {
        AS3Parser.importDeclaration_return retval = new AS3Parser.importDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IMPORT95=null;
        Token DOT97=null;
        Token STAR98=null;
        AS3Parser.type_return type96 = null;

        AS3Parser.semic_return semic99 = null;


        Object IMPORT95_tree=null;
        Object DOT97_tree=null;
        Object STAR98_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:991:2: ( IMPORT type ( DOT STAR )? semic )
            // com/shin1ogawa/as3/AS3.g:991:4: IMPORT type ( DOT STAR )? semic
            {
            root_0 = (Object)adaptor.nil();

            IMPORT95=(Token)match(input,IMPORT,FOLLOW_IMPORT_in_importDeclaration3408); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IMPORT95_tree = (Object)adaptor.create(IMPORT95);
            root_0 = (Object)adaptor.becomeRoot(IMPORT95_tree, root_0);
            }
            pushFollow(FOLLOW_type_in_importDeclaration3411);
            type96=type();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, type96.getTree());
            // com/shin1ogawa/as3/AS3.g:991:17: ( DOT STAR )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==DOT) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:991:18: DOT STAR
                    {
                    DOT97=(Token)match(input,DOT,FOLLOW_DOT_in_importDeclaration3414); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    DOT97_tree = (Object)adaptor.create(DOT97);
                    adaptor.addChild(root_0, DOT97_tree);
                    }
                    STAR98=(Token)match(input,STAR,FOLLOW_STAR_in_importDeclaration3416); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    STAR98_tree = (Object)adaptor.create(STAR98);
                    adaptor.addChild(root_0, STAR98_tree);
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_semic_in_importDeclaration3420);
            semic99=semic();

            state._fsp--;
            if (state.failed) return retval;

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "importDeclaration"

    public static class directive_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "directive"
    // com/shin1ogawa/as3/AS3.g:998:1: directive : ( bindingDecl | includeDirective | useNamespaceDirective | importDeclaration | defaultXMLNamespaceDirective ) ;
    public final AS3Parser.directive_return directive() throws RecognitionException {
        AS3Parser.directive_return retval = new AS3Parser.directive_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.bindingDecl_return bindingDecl100 = null;

        AS3Parser.includeDirective_return includeDirective101 = null;

        AS3Parser.useNamespaceDirective_return useNamespaceDirective102 = null;

        AS3Parser.importDeclaration_return importDeclaration103 = null;

        AS3Parser.defaultXMLNamespaceDirective_return defaultXMLNamespaceDirective104 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:999:2: ( ( bindingDecl | includeDirective | useNamespaceDirective | importDeclaration | defaultXMLNamespaceDirective ) )
            // com/shin1ogawa/as3/AS3.g:999:4: ( bindingDecl | includeDirective | useNamespaceDirective | importDeclaration | defaultXMLNamespaceDirective )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:999:4: ( bindingDecl | includeDirective | useNamespaceDirective | importDeclaration | defaultXMLNamespaceDirective )
            int alt34=5;
            switch ( input.LA(1) ) {
            case LBRACK:
                {
                alt34=1;
                }
                break;
            case INCLUDE:
                {
                alt34=2;
                }
                break;
            case USE:
                {
                alt34=3;
                }
                break;
            case IMPORT:
                {
                alt34=4;
                }
                break;
            case DEFAULT:
                {
                alt34=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }

            switch (alt34) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:999:5: bindingDecl
                    {
                    pushFollow(FOLLOW_bindingDecl_in_directive3438);
                    bindingDecl100=bindingDecl();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, bindingDecl100.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:999:19: includeDirective
                    {
                    pushFollow(FOLLOW_includeDirective_in_directive3442);
                    includeDirective101=includeDirective();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, includeDirective101.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:999:38: useNamespaceDirective
                    {
                    pushFollow(FOLLOW_useNamespaceDirective_in_directive3446);
                    useNamespaceDirective102=useNamespaceDirective();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, useNamespaceDirective102.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:999:62: importDeclaration
                    {
                    pushFollow(FOLLOW_importDeclaration_in_directive3450);
                    importDeclaration103=importDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, importDeclaration103.getTree());

                    }
                    break;
                case 5 :
                    // com/shin1ogawa/as3/AS3.g:999:107: defaultXMLNamespaceDirective
                    {
                    pushFollow(FOLLOW_defaultXMLNamespaceDirective_in_directive3456);
                    defaultXMLNamespaceDirective104=defaultXMLNamespaceDirective();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, defaultXMLNamespaceDirective104.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "directive"

    public static class xmlKeyword_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "xmlKeyword"
    // com/shin1ogawa/as3/AS3.g:1002:1: xmlKeyword : {...}? IDENTIFIER ;
    public final AS3Parser.xmlKeyword_return xmlKeyword() throws RecognitionException {
        AS3Parser.xmlKeyword_return retval = new AS3Parser.xmlKeyword_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER105=null;

        Object IDENTIFIER105_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1003:2: ({...}? IDENTIFIER )
            // com/shin1ogawa/as3/AS3.g:1003:4: {...}? IDENTIFIER
            {
            root_0 = (Object)adaptor.nil();

            if ( !((input.LT(1).getText().equalsIgnoreCase("xml"))) ) {
                if (state.backtracking>0) {state.failed=true; return retval;}
                throw new FailedPredicateException(input, "xmlKeyword", "input.LT(1).getText().equalsIgnoreCase(\"xml\")");
            }
            IDENTIFIER105=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_xmlKeyword3471); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IDENTIFIER105_tree = (Object)adaptor.create(IDENTIFIER105);
            adaptor.addChild(root_0, IDENTIFIER105_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "xmlKeyword"

    public static class defaultXMLNamespaceDirective_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "defaultXMLNamespaceDirective"
    // com/shin1ogawa/as3/AS3.g:1006:1: defaultXMLNamespaceDirective : DEFAULT xmlKeyword NAMESPACE ASSIGN IDENTIFIER semic ;
    public final AS3Parser.defaultXMLNamespaceDirective_return defaultXMLNamespaceDirective() throws RecognitionException {
        AS3Parser.defaultXMLNamespaceDirective_return retval = new AS3Parser.defaultXMLNamespaceDirective_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token DEFAULT106=null;
        Token NAMESPACE108=null;
        Token ASSIGN109=null;
        Token IDENTIFIER110=null;
        AS3Parser.xmlKeyword_return xmlKeyword107 = null;

        AS3Parser.semic_return semic111 = null;


        Object DEFAULT106_tree=null;
        Object NAMESPACE108_tree=null;
        Object ASSIGN109_tree=null;
        Object IDENTIFIER110_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1007:2: ( DEFAULT xmlKeyword NAMESPACE ASSIGN IDENTIFIER semic )
            // com/shin1ogawa/as3/AS3.g:1007:4: DEFAULT xmlKeyword NAMESPACE ASSIGN IDENTIFIER semic
            {
            root_0 = (Object)adaptor.nil();

            DEFAULT106=(Token)match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultXMLNamespaceDirective3484); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            DEFAULT106_tree = (Object)adaptor.create(DEFAULT106);
            adaptor.addChild(root_0, DEFAULT106_tree);
            }
            pushFollow(FOLLOW_xmlKeyword_in_defaultXMLNamespaceDirective3486);
            xmlKeyword107=xmlKeyword();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlKeyword107.getTree());
            NAMESPACE108=(Token)match(input,NAMESPACE,FOLLOW_NAMESPACE_in_defaultXMLNamespaceDirective3488); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            NAMESPACE108_tree = (Object)adaptor.create(NAMESPACE108);
            adaptor.addChild(root_0, NAMESPACE108_tree);
            }
            ASSIGN109=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_defaultXMLNamespaceDirective3490); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            ASSIGN109_tree = (Object)adaptor.create(ASSIGN109);
            adaptor.addChild(root_0, ASSIGN109_tree);
            }
            IDENTIFIER110=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_defaultXMLNamespaceDirective3492); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IDENTIFIER110_tree = (Object)adaptor.create(IDENTIFIER110);
            adaptor.addChild(root_0, IDENTIFIER110_tree);
            }
            pushFollow(FOLLOW_semic_in_defaultXMLNamespaceDirective3494);
            semic111=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic111.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "defaultXMLNamespaceDirective"

    public static class bindingDecl_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bindingDecl"
    // com/shin1ogawa/as3/AS3.g:1010:1: bindingDecl : LBRACK IDENTIFIER ( LPAREN ( bindingDeclArg ( COMMA bindingDeclArg )* )? RPAREN )? RBRACK ( SEMI )? ;
    public final AS3Parser.bindingDecl_return bindingDecl() throws RecognitionException {
        AS3Parser.bindingDecl_return retval = new AS3Parser.bindingDecl_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LBRACK112=null;
        Token IDENTIFIER113=null;
        Token LPAREN114=null;
        Token COMMA116=null;
        Token RPAREN118=null;
        Token RBRACK119=null;
        Token SEMI120=null;
        AS3Parser.bindingDeclArg_return bindingDeclArg115 = null;

        AS3Parser.bindingDeclArg_return bindingDeclArg117 = null;


        Object LBRACK112_tree=null;
        Object IDENTIFIER113_tree=null;
        Object LPAREN114_tree=null;
        Object COMMA116_tree=null;
        Object RPAREN118_tree=null;
        Object RBRACK119_tree=null;
        Object SEMI120_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1011:2: ( LBRACK IDENTIFIER ( LPAREN ( bindingDeclArg ( COMMA bindingDeclArg )* )? RPAREN )? RBRACK ( SEMI )? )
            // com/shin1ogawa/as3/AS3.g:1011:4: LBRACK IDENTIFIER ( LPAREN ( bindingDeclArg ( COMMA bindingDeclArg )* )? RPAREN )? RBRACK ( SEMI )?
            {
            root_0 = (Object)adaptor.nil();

            LBRACK112=(Token)match(input,LBRACK,FOLLOW_LBRACK_in_bindingDecl3506); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LBRACK112_tree = (Object)adaptor.create(LBRACK112);
            root_0 = (Object)adaptor.becomeRoot(LBRACK112_tree, root_0);
            }
            IDENTIFIER113=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_bindingDecl3509); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IDENTIFIER113_tree = (Object)adaptor.create(IDENTIFIER113);
            adaptor.addChild(root_0, IDENTIFIER113_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1011:23: ( LPAREN ( bindingDeclArg ( COMMA bindingDeclArg )* )? RPAREN )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==LPAREN) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1011:24: LPAREN ( bindingDeclArg ( COMMA bindingDeclArg )* )? RPAREN
                    {
                    LPAREN114=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_bindingDecl3512); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    LPAREN114_tree = (Object)adaptor.create(LPAREN114);
                    adaptor.addChild(root_0, LPAREN114_tree);
                    }
                    // com/shin1ogawa/as3/AS3.g:1011:31: ( bindingDeclArg ( COMMA bindingDeclArg )* )?
                    int alt36=2;
                    int LA36_0 = input.LA(1);

                    if ( ((LA36_0>=AS && LA36_0<=STATIC)||LA36_0==VOID||LA36_0==LCURLY||LA36_0==LPAREN||LA36_0==LBRACK||LA36_0==LT||(LA36_0>=PLUS && LA36_0<=STAR)||(LA36_0>=INC && LA36_0<=DEC)||(LA36_0>=NOT && LA36_0<=INV)||(LA36_0>=XML_AT && LA36_0<=XML_LS_STD)||(LA36_0>=SINGLE_QUOTE_LITERAL && LA36_0<=DOUBLE_QUOTE_LITERAL)||LA36_0==REGULAR_EXPR_LITERAL||LA36_0==HEX_NUMBER_LITERAL||LA36_0==DEC_NUMBER_LITERAL||LA36_0==IDENTIFIER||(LA36_0>=XML_COMMENT && LA36_0<=XML_PI)) ) {
                        alt36=1;
                    }
                    switch (alt36) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:1011:32: bindingDeclArg ( COMMA bindingDeclArg )*
                            {
                            pushFollow(FOLLOW_bindingDeclArg_in_bindingDecl3515);
                            bindingDeclArg115=bindingDeclArg();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) adaptor.addChild(root_0, bindingDeclArg115.getTree());
                            // com/shin1ogawa/as3/AS3.g:1011:47: ( COMMA bindingDeclArg )*
                            loop35:
                            do {
                                int alt35=2;
                                int LA35_0 = input.LA(1);

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


                                switch (alt35) {
                            	case 1 :
                            	    // com/shin1ogawa/as3/AS3.g:1011:48: COMMA bindingDeclArg
                            	    {
                            	    COMMA116=(Token)match(input,COMMA,FOLLOW_COMMA_in_bindingDecl3518); if (state.failed) return retval;
                            	    if ( state.backtracking==0 ) {
                            	    COMMA116_tree = (Object)adaptor.create(COMMA116);
                            	    adaptor.addChild(root_0, COMMA116_tree);
                            	    }
                            	    pushFollow(FOLLOW_bindingDeclArg_in_bindingDecl3520);
                            	    bindingDeclArg117=bindingDeclArg();

                            	    state._fsp--;
                            	    if (state.failed) return retval;
                            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bindingDeclArg117.getTree());

                            	    }
                            	    break;

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


                            }
                            break;

                    }

                    RPAREN118=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_bindingDecl3526); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    RPAREN118_tree = (Object)adaptor.create(RPAREN118);
                    adaptor.addChild(root_0, RPAREN118_tree);
                    }

                    }
                    break;

            }

            RBRACK119=(Token)match(input,RBRACK,FOLLOW_RBRACK_in_bindingDecl3530); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RBRACK119_tree = (Object)adaptor.create(RBRACK119);
            adaptor.addChild(root_0, RBRACK119_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1011:89: ( SEMI )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==SEMI) ) {
                int LA38_1 = input.LA(2);

                if ( (synpred120_AS3()) ) {
                    alt38=1;
                }
            }
            switch (alt38) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: SEMI
                    {
                    SEMI120=(Token)match(input,SEMI,FOLLOW_SEMI_in_bindingDecl3532); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    SEMI120_tree = (Object)adaptor.create(SEMI120);
                    adaptor.addChild(root_0, SEMI120_tree);
                    }

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bindingDecl"

    public static class includeDirective_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "includeDirective"
    // com/shin1ogawa/as3/AS3.g:1014:1: includeDirective : INCLUDE stringLiteral ( semic )? -> ^( INCLUDE ^( stringLiteral ) ( semic )? ) ;
    public final AS3Parser.includeDirective_return includeDirective() throws RecognitionException {
        AS3Parser.includeDirective_return retval = new AS3Parser.includeDirective_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token INCLUDE121=null;
        AS3Parser.stringLiteral_return stringLiteral122 = null;

        AS3Parser.semic_return semic123 = null;


        Object INCLUDE121_tree=null;
        RewriteRuleTokenStream stream_INCLUDE=new RewriteRuleTokenStream(adaptor,"token INCLUDE");
        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
        RewriteRuleSubtreeStream stream_stringLiteral=new RewriteRuleSubtreeStream(adaptor,"rule stringLiteral");
        try {
            // com/shin1ogawa/as3/AS3.g:1015:2: ( INCLUDE stringLiteral ( semic )? -> ^( INCLUDE ^( stringLiteral ) ( semic )? ) )
            // com/shin1ogawa/as3/AS3.g:1015:4: INCLUDE stringLiteral ( semic )?
            {
            INCLUDE121=(Token)match(input,INCLUDE,FOLLOW_INCLUDE_in_includeDirective3544); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_INCLUDE.add(INCLUDE121);

            pushFollow(FOLLOW_stringLiteral_in_includeDirective3546);
            stringLiteral122=stringLiteral();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_stringLiteral.add(stringLiteral122.getTree());
            // com/shin1ogawa/as3/AS3.g:1015:26: ( semic )?
            int alt39=2;
            switch ( input.LA(1) ) {
                case SEMI:
                    {
                    int LA39_1 = input.LA(2);

                    if ( (synpred121_AS3()) ) {
                        alt39=1;
                    }
                    }
                    break;
                case EOF:
                    {
                    int LA39_2 = input.LA(2);

                    if ( (LA39_2==EOF||(LA39_2>=AS && LA39_2<=LPAREN)||LA39_2==LBRACK||LA39_2==LT||(LA39_2>=PLUS && LA39_2<=STAR)||(LA39_2>=INC && LA39_2<=DEC)||(LA39_2>=NOT && LA39_2<=INV)||(LA39_2>=XML_AT && LA39_2<=XML_LS_STD)||(LA39_2>=SINGLE_QUOTE_LITERAL && LA39_2<=DOUBLE_QUOTE_LITERAL)||LA39_2==REGULAR_EXPR_LITERAL||LA39_2==HEX_NUMBER_LITERAL||LA39_2==DEC_NUMBER_LITERAL||LA39_2==IDENTIFIER||(LA39_2>=XML_COMMENT && LA39_2<=XML_PI)) ) {
                        alt39=1;
                    }
                    }
                    break;
                case RCURLY:
                    {
                    int LA39_3 = input.LA(2);

                    if ( (synpred121_AS3()) ) {
                        alt39=1;
                    }
                    }
                    break;
            }

            switch (alt39) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: semic
                    {
                    pushFollow(FOLLOW_semic_in_includeDirective3548);
                    semic123=semic();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_semic.add(semic123.getTree());

                    }
                    break;

            }



            // AST REWRITE
            // elements: semic, INCLUDE, stringLiteral
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1016:2: -> ^( INCLUDE ^( stringLiteral ) ( semic )? )
            {
                // com/shin1ogawa/as3/AS3.g:1016:5: ^( INCLUDE ^( stringLiteral ) ( semic )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_INCLUDE.nextNode(), root_1);

                // com/shin1ogawa/as3/AS3.g:1016:15: ^( stringLiteral )
                {
                Object root_2 = (Object)adaptor.nil();
                root_2 = (Object)adaptor.becomeRoot(stream_stringLiteral.nextNode(), root_2);

                adaptor.addChild(root_1, root_2);
                }
                // com/shin1ogawa/as3/AS3.g:1016:32: ( semic )?
                if ( stream_semic.hasNext() ) {
                    adaptor.addChild(root_1, stream_semic.nextTree());

                }
                stream_semic.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "includeDirective"

    public static class bindingDeclArg_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bindingDeclArg"
    // com/shin1ogawa/as3/AS3.g:1019:1: bindingDeclArg : ( IDENTIFIER ASSIGN )? expression ;
    public final AS3Parser.bindingDeclArg_return bindingDeclArg() throws RecognitionException {
        AS3Parser.bindingDeclArg_return retval = new AS3Parser.bindingDeclArg_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER124=null;
        Token ASSIGN125=null;
        AS3Parser.expression_return expression126 = null;


        Object IDENTIFIER124_tree=null;
        Object ASSIGN125_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1020:2: ( ( IDENTIFIER ASSIGN )? expression )
            // com/shin1ogawa/as3/AS3.g:1021:2: ( IDENTIFIER ASSIGN )? expression
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1021:2: ( IDENTIFIER ASSIGN )?
            int alt40=2;
            alt40 = dfa40.predict(input);
            switch (alt40) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1021:3: IDENTIFIER ASSIGN
                    {
                    IDENTIFIER124=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_bindingDeclArg3577); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER124_tree = (Object)adaptor.create(IDENTIFIER124);
                    adaptor.addChild(root_0, IDENTIFIER124_tree);
                    }
                    ASSIGN125=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_bindingDeclArg3579); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    ASSIGN125_tree = (Object)adaptor.create(ASSIGN125);
                    adaptor.addChild(root_0, ASSIGN125_tree);
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_expression_in_bindingDeclArg3583);
            expression126=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression126.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bindingDeclArg"

    public static class interfaceDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "interfaceDeclaration"
    // com/shin1ogawa/as3/AS3.g:1029:1: interfaceDeclaration : ( memberModifiers )? INTERFACE type ( interfaceExtends )? interfaceBody -> ^( INTERFACE type ( interfaceExtends )? ( memberModifiers )? interfaceBody ) ;
    public final AS3Parser.interfaceDeclaration_return interfaceDeclaration() throws RecognitionException {
        AS3Parser.interfaceDeclaration_return retval = new AS3Parser.interfaceDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token INTERFACE128=null;
        AS3Parser.memberModifiers_return memberModifiers127 = null;

        AS3Parser.type_return type129 = null;

        AS3Parser.interfaceExtends_return interfaceExtends130 = null;

        AS3Parser.interfaceBody_return interfaceBody131 = null;


        Object INTERFACE128_tree=null;
        RewriteRuleTokenStream stream_INTERFACE=new RewriteRuleTokenStream(adaptor,"token INTERFACE");
        RewriteRuleSubtreeStream stream_interfaceBody=new RewriteRuleSubtreeStream(adaptor,"rule interfaceBody");
        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_interfaceExtends=new RewriteRuleSubtreeStream(adaptor,"rule interfaceExtends");
        RewriteRuleSubtreeStream stream_memberModifiers=new RewriteRuleSubtreeStream(adaptor,"rule memberModifiers");
        try {
            // com/shin1ogawa/as3/AS3.g:1030:2: ( ( memberModifiers )? INTERFACE type ( interfaceExtends )? interfaceBody -> ^( INTERFACE type ( interfaceExtends )? ( memberModifiers )? interfaceBody ) )
            // com/shin1ogawa/as3/AS3.g:1030:4: ( memberModifiers )? INTERFACE type ( interfaceExtends )? interfaceBody
            {
            // com/shin1ogawa/as3/AS3.g:1030:4: ( memberModifiers )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==INTERNAL||LA41_0==NATIVE||(LA41_0>=PRIVATE && LA41_0<=PUBLIC)||(LA41_0>=DYNAMIC && LA41_0<=STATIC)||LA41_0==IDENTIFIER) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                    {
                    pushFollow(FOLLOW_memberModifiers_in_interfaceDeclaration3599);
                    memberModifiers127=memberModifiers();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers127.getTree());

                    }
                    break;

            }

            INTERFACE128=(Token)match(input,INTERFACE,FOLLOW_INTERFACE_in_interfaceDeclaration3602); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_INTERFACE.add(INTERFACE128);

            pushFollow(FOLLOW_type_in_interfaceDeclaration3604);
            type129=type();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_type.add(type129.getTree());
            // com/shin1ogawa/as3/AS3.g:1030:36: ( interfaceExtends )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==EXTENDS) ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: interfaceExtends
                    {
                    pushFollow(FOLLOW_interfaceExtends_in_interfaceDeclaration3606);
                    interfaceExtends130=interfaceExtends();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_interfaceExtends.add(interfaceExtends130.getTree());

                    }
                    break;

            }

            pushFollow(FOLLOW_interfaceBody_in_interfaceDeclaration3609);
            interfaceBody131=interfaceBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_interfaceBody.add(interfaceBody131.getTree());


            // AST REWRITE
            // elements: interfaceExtends, interfaceBody, INTERFACE, memberModifiers, type
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1031:2: -> ^( INTERFACE type ( interfaceExtends )? ( memberModifiers )? interfaceBody )
            {
                // com/shin1ogawa/as3/AS3.g:1031:5: ^( INTERFACE type ( interfaceExtends )? ( memberModifiers )? interfaceBody )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_INTERFACE.nextNode(), root_1);

                adaptor.addChild(root_1, stream_type.nextTree());
                // com/shin1ogawa/as3/AS3.g:1031:22: ( interfaceExtends )?
                if ( stream_interfaceExtends.hasNext() ) {
                    adaptor.addChild(root_1, stream_interfaceExtends.nextTree());

                }
                stream_interfaceExtends.reset();
                // com/shin1ogawa/as3/AS3.g:1031:40: ( memberModifiers )?
                if ( stream_memberModifiers.hasNext() ) {
                    adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                }
                stream_memberModifiers.reset();
                adaptor.addChild(root_1, stream_interfaceBody.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "interfaceDeclaration"

    public static class interfaceExtends_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "interfaceExtends"
    // com/shin1ogawa/as3/AS3.g:1033:1: interfaceExtends : EXTENDS typeList ;
    public final AS3Parser.interfaceExtends_return interfaceExtends() throws RecognitionException {
        AS3Parser.interfaceExtends_return retval = new AS3Parser.interfaceExtends_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token EXTENDS132=null;
        AS3Parser.typeList_return typeList133 = null;


        Object EXTENDS132_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1034:2: ( EXTENDS typeList )
            // com/shin1ogawa/as3/AS3.g:1034:4: EXTENDS typeList
            {
            root_0 = (Object)adaptor.nil();

            EXTENDS132=(Token)match(input,EXTENDS,FOLLOW_EXTENDS_in_interfaceExtends3636); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            EXTENDS132_tree = (Object)adaptor.create(EXTENDS132);
            root_0 = (Object)adaptor.becomeRoot(EXTENDS132_tree, root_0);
            }
            pushFollow(FOLLOW_typeList_in_interfaceExtends3639);
            typeList133=typeList();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, typeList133.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "interfaceExtends"

    public static class interfaceBody_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "interfaceBody"
    // com/shin1ogawa/as3/AS3.g:1037:1: interfaceBody : LCURLY ( interfaceElement )* RCURLY ;
    public final AS3Parser.interfaceBody_return interfaceBody() throws RecognitionException {
        AS3Parser.interfaceBody_return retval = new AS3Parser.interfaceBody_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LCURLY134=null;
        Token RCURLY136=null;
        AS3Parser.interfaceElement_return interfaceElement135 = null;


        Object LCURLY134_tree=null;
        Object RCURLY136_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1038:2: ( LCURLY ( interfaceElement )* RCURLY )
            // com/shin1ogawa/as3/AS3.g:1038:4: LCURLY ( interfaceElement )* RCURLY
            {
            root_0 = (Object)adaptor.nil();

            LCURLY134=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_interfaceBody3650); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY134_tree = (Object)adaptor.create(LCURLY134);
            root_0 = (Object)adaptor.becomeRoot(LCURLY134_tree, root_0);
            }
            // com/shin1ogawa/as3/AS3.g:1038:12: ( interfaceElement )*
            loop43:
            do {
                int alt43=2;
                int LA43_0 = input.LA(1);

                if ( ((LA43_0>=AS && LA43_0<=LCURLY)||LA43_0==LPAREN||LA43_0==LBRACK||LA43_0==LT||(LA43_0>=PLUS && LA43_0<=STAR)||(LA43_0>=INC && LA43_0<=DEC)||(LA43_0>=NOT && LA43_0<=INV)||(LA43_0>=XML_AT && LA43_0<=XML_LS_STD)||(LA43_0>=SINGLE_QUOTE_LITERAL && LA43_0<=DOUBLE_QUOTE_LITERAL)||LA43_0==REGULAR_EXPR_LITERAL||LA43_0==HEX_NUMBER_LITERAL||LA43_0==DEC_NUMBER_LITERAL||LA43_0==IDENTIFIER||(LA43_0>=XML_COMMENT && LA43_0<=XML_PI)) ) {
                    alt43=1;
                }


                switch (alt43) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: interfaceElement
            	    {
            	    pushFollow(FOLLOW_interfaceElement_in_interfaceBody3653);
            	    interfaceElement135=interfaceElement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceElement135.getTree());

            	    }
            	    break;

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

            RCURLY136=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_interfaceBody3656); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY136_tree = (Object)adaptor.create(RCURLY136);
            adaptor.addChild(root_0, RCURLY136_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "interfaceBody"

    public static class classDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "classDeclaration"
    // com/shin1ogawa/as3/AS3.g:1041:1: classDeclaration : ( memberModifiers )? CLASS type ( classExtends )? ( classImplements )? classBody -> ^( CLASS type ( classExtends )? ( classImplements )? ( memberModifiers )? classBody ) ;
    public final AS3Parser.classDeclaration_return classDeclaration() throws RecognitionException {
        AS3Parser.classDeclaration_return retval = new AS3Parser.classDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token CLASS138=null;
        AS3Parser.memberModifiers_return memberModifiers137 = null;

        AS3Parser.type_return type139 = null;

        AS3Parser.classExtends_return classExtends140 = null;

        AS3Parser.classImplements_return classImplements141 = null;

        AS3Parser.classBody_return classBody142 = null;


        Object CLASS138_tree=null;
        RewriteRuleTokenStream stream_CLASS=new RewriteRuleTokenStream(adaptor,"token CLASS");
        RewriteRuleSubtreeStream stream_classImplements=new RewriteRuleSubtreeStream(adaptor,"rule classImplements");
        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_classBody=new RewriteRuleSubtreeStream(adaptor,"rule classBody");
        RewriteRuleSubtreeStream stream_classExtends=new RewriteRuleSubtreeStream(adaptor,"rule classExtends");
        RewriteRuleSubtreeStream stream_memberModifiers=new RewriteRuleSubtreeStream(adaptor,"rule memberModifiers");
        try {
            // com/shin1ogawa/as3/AS3.g:1042:2: ( ( memberModifiers )? CLASS type ( classExtends )? ( classImplements )? classBody -> ^( CLASS type ( classExtends )? ( classImplements )? ( memberModifiers )? classBody ) )
            // com/shin1ogawa/as3/AS3.g:1042:4: ( memberModifiers )? CLASS type ( classExtends )? ( classImplements )? classBody
            {
            // com/shin1ogawa/as3/AS3.g:1042:4: ( memberModifiers )?
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==INTERNAL||LA44_0==NATIVE||(LA44_0>=PRIVATE && LA44_0<=PUBLIC)||(LA44_0>=DYNAMIC && LA44_0<=STATIC)||LA44_0==IDENTIFIER) ) {
                alt44=1;
            }
            switch (alt44) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                    {
                    pushFollow(FOLLOW_memberModifiers_in_classDeclaration3667);
                    memberModifiers137=memberModifiers();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers137.getTree());

                    }
                    break;

            }

            CLASS138=(Token)match(input,CLASS,FOLLOW_CLASS_in_classDeclaration3670); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_CLASS.add(CLASS138);

            pushFollow(FOLLOW_type_in_classDeclaration3672);
            type139=type();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_type.add(type139.getTree());
            // com/shin1ogawa/as3/AS3.g:1042:32: ( classExtends )?
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==EXTENDS) ) {
                alt45=1;
            }
            switch (alt45) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: classExtends
                    {
                    pushFollow(FOLLOW_classExtends_in_classDeclaration3674);
                    classExtends140=classExtends();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_classExtends.add(classExtends140.getTree());

                    }
                    break;

            }

            // com/shin1ogawa/as3/AS3.g:1042:46: ( classImplements )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==IMPLEMENTS) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: classImplements
                    {
                    pushFollow(FOLLOW_classImplements_in_classDeclaration3677);
                    classImplements141=classImplements();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_classImplements.add(classImplements141.getTree());

                    }
                    break;

            }

            pushFollow(FOLLOW_classBody_in_classDeclaration3680);
            classBody142=classBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_classBody.add(classBody142.getTree());


            // AST REWRITE
            // elements: type, classBody, CLASS, memberModifiers, classExtends, classImplements
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1043:2: -> ^( CLASS type ( classExtends )? ( classImplements )? ( memberModifiers )? classBody )
            {
                // com/shin1ogawa/as3/AS3.g:1043:5: ^( CLASS type ( classExtends )? ( classImplements )? ( memberModifiers )? classBody )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_CLASS.nextNode(), root_1);

                adaptor.addChild(root_1, stream_type.nextTree());
                // com/shin1ogawa/as3/AS3.g:1043:18: ( classExtends )?
                if ( stream_classExtends.hasNext() ) {
                    adaptor.addChild(root_1, stream_classExtends.nextTree());

                }
                stream_classExtends.reset();
                // com/shin1ogawa/as3/AS3.g:1043:32: ( classImplements )?
                if ( stream_classImplements.hasNext() ) {
                    adaptor.addChild(root_1, stream_classImplements.nextTree());

                }
                stream_classImplements.reset();
                // com/shin1ogawa/as3/AS3.g:1043:49: ( memberModifiers )?
                if ( stream_memberModifiers.hasNext() ) {
                    adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                }
                stream_memberModifiers.reset();
                adaptor.addChild(root_1, stream_classBody.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "classDeclaration"

    public static class classExtends_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "classExtends"
    // com/shin1ogawa/as3/AS3.g:1046:1: classExtends : EXTENDS type ;
    public final AS3Parser.classExtends_return classExtends() throws RecognitionException {
        AS3Parser.classExtends_return retval = new AS3Parser.classExtends_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token EXTENDS143=null;
        AS3Parser.type_return type144 = null;


        Object EXTENDS143_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1047:2: ( EXTENDS type )
            // com/shin1ogawa/as3/AS3.g:1047:4: EXTENDS type
            {
            root_0 = (Object)adaptor.nil();

            EXTENDS143=(Token)match(input,EXTENDS,FOLLOW_EXTENDS_in_classExtends3711); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            EXTENDS143_tree = (Object)adaptor.create(EXTENDS143);
            root_0 = (Object)adaptor.becomeRoot(EXTENDS143_tree, root_0);
            }
            pushFollow(FOLLOW_type_in_classExtends3714);
            type144=type();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, type144.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "classExtends"

    public static class classImplements_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "classImplements"
    // com/shin1ogawa/as3/AS3.g:1049:1: classImplements : IMPLEMENTS typeList ;
    public final AS3Parser.classImplements_return classImplements() throws RecognitionException {
        AS3Parser.classImplements_return retval = new AS3Parser.classImplements_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IMPLEMENTS145=null;
        AS3Parser.typeList_return typeList146 = null;


        Object IMPLEMENTS145_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1050:2: ( IMPLEMENTS typeList )
            // com/shin1ogawa/as3/AS3.g:1050:4: IMPLEMENTS typeList
            {
            root_0 = (Object)adaptor.nil();

            IMPLEMENTS145=(Token)match(input,IMPLEMENTS,FOLLOW_IMPLEMENTS_in_classImplements3724); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IMPLEMENTS145_tree = (Object)adaptor.create(IMPLEMENTS145);
            root_0 = (Object)adaptor.becomeRoot(IMPLEMENTS145_tree, root_0);
            }
            pushFollow(FOLLOW_typeList_in_classImplements3727);
            typeList146=typeList();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, typeList146.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "classImplements"

    public static class classBody_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "classBody"
    // com/shin1ogawa/as3/AS3.g:1053:1: classBody : LCURLY ( classBodyElement )* RCURLY ;
    public final AS3Parser.classBody_return classBody() throws RecognitionException {
        AS3Parser.classBody_return retval = new AS3Parser.classBody_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LCURLY147=null;
        Token RCURLY149=null;
        AS3Parser.classBodyElement_return classBodyElement148 = null;


        Object LCURLY147_tree=null;
        Object RCURLY149_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1054:2: ( LCURLY ( classBodyElement )* RCURLY )
            // com/shin1ogawa/as3/AS3.g:1054:4: LCURLY ( classBodyElement )* RCURLY
            {
            root_0 = (Object)adaptor.nil();

            LCURLY147=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_classBody3738); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY147_tree = (Object)adaptor.create(LCURLY147);
            root_0 = (Object)adaptor.becomeRoot(LCURLY147_tree, root_0);
            }
            // com/shin1ogawa/as3/AS3.g:1054:12: ( classBodyElement )*
            loop47:
            do {
                int alt47=2;
                int LA47_0 = input.LA(1);

                if ( ((LA47_0>=AS && LA47_0<=LCURLY)||LA47_0==LPAREN||LA47_0==LBRACK||LA47_0==LT||(LA47_0>=PLUS && LA47_0<=STAR)||(LA47_0>=INC && LA47_0<=DEC)||(LA47_0>=NOT && LA47_0<=INV)||(LA47_0>=XML_AT && LA47_0<=XML_LS_STD)||(LA47_0>=SINGLE_QUOTE_LITERAL && LA47_0<=DOUBLE_QUOTE_LITERAL)||LA47_0==REGULAR_EXPR_LITERAL||LA47_0==HEX_NUMBER_LITERAL||LA47_0==DEC_NUMBER_LITERAL||LA47_0==IDENTIFIER||(LA47_0>=XML_COMMENT && LA47_0<=XML_PI)) ) {
                    alt47=1;
                }


                switch (alt47) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: classBodyElement
            	    {
            	    pushFollow(FOLLOW_classBodyElement_in_classBody3741);
            	    classBodyElement148=classBodyElement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, classBodyElement148.getTree());

            	    }
            	    break;

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

            RCURLY149=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_classBody3744); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY149_tree = (Object)adaptor.create(RCURLY149);
            adaptor.addChild(root_0, RCURLY149_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "classBody"

    public static class classBodyElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "classBodyElement"
    // com/shin1ogawa/as3/AS3.g:1059:1: classBodyElement : ( propertyDeclaration | functionDeclaration | interfaceFunctionDeclaration | statement | directive );
    public final AS3Parser.classBodyElement_return classBodyElement() throws RecognitionException {
        AS3Parser.classBodyElement_return retval = new AS3Parser.classBodyElement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.propertyDeclaration_return propertyDeclaration150 = null;

        AS3Parser.functionDeclaration_return functionDeclaration151 = null;

        AS3Parser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration152 = null;

        AS3Parser.statement_return statement153 = null;

        AS3Parser.directive_return directive154 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1060:2: ( propertyDeclaration | functionDeclaration | interfaceFunctionDeclaration | statement | directive )
            int alt48=5;
            alt48 = dfa48.predict(input);
            switch (alt48) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1060:4: propertyDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_propertyDeclaration_in_classBodyElement3759);
                    propertyDeclaration150=propertyDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyDeclaration150.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1061:4: functionDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_functionDeclaration_in_classBodyElement3764);
                    functionDeclaration151=functionDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, functionDeclaration151.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1062:4: interfaceFunctionDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_interfaceFunctionDeclaration_in_classBodyElement3769);
                    interfaceFunctionDeclaration152=interfaceFunctionDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceFunctionDeclaration152.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:1063:4: statement
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_statement_in_classBodyElement3775);
                    statement153=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement153.getTree());

                    }
                    break;
                case 5 :
                    // com/shin1ogawa/as3/AS3.g:1064:4: directive
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_directive_in_classBodyElement3780);
                    directive154=directive();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, directive154.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "classBodyElement"

    public static class interfaceElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "interfaceElement"
    // com/shin1ogawa/as3/AS3.g:1067:1: interfaceElement : ( propertyDeclaration | interfaceFunctionDeclaration | statement | directive );
    public final AS3Parser.interfaceElement_return interfaceElement() throws RecognitionException {
        AS3Parser.interfaceElement_return retval = new AS3Parser.interfaceElement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.propertyDeclaration_return propertyDeclaration155 = null;

        AS3Parser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration156 = null;

        AS3Parser.statement_return statement157 = null;

        AS3Parser.directive_return directive158 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1068:2: ( propertyDeclaration | interfaceFunctionDeclaration | statement | directive )
            int alt49=4;
            alt49 = dfa49.predict(input);
            switch (alt49) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1068:4: propertyDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_propertyDeclaration_in_interfaceElement3792);
                    propertyDeclaration155=propertyDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyDeclaration155.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1069:4: interfaceFunctionDeclaration
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_interfaceFunctionDeclaration_in_interfaceElement3797);
                    interfaceFunctionDeclaration156=interfaceFunctionDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceFunctionDeclaration156.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1070:4: statement
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_statement_in_interfaceElement3803);
                    statement157=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement157.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:1071:4: directive
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_directive_in_interfaceElement3808);
                    directive158=directive();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, directive158.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "interfaceElement"

    public static class interfaceFunctionDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "interfaceFunctionDeclaration"
    // com/shin1ogawa/as3/AS3.g:1078:1: interfaceFunctionDeclaration : ( ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? semic -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList ) | ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? semic -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList ) );
    public final AS3Parser.interfaceFunctionDeclaration_return interfaceFunctionDeclaration() throws RecognitionException {
        AS3Parser.interfaceFunctionDeclaration_return retval = new AS3Parser.interfaceFunctionDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FUNCTION160=null;
        Token IDENTIFIER162=null;
        Token COLON164=null;
        Token FUNCTION168=null;
        Token NAMESPACE170=null;
        Token COLON172=null;
        AS3Parser.memberModifiers_return memberModifiers159 = null;

        AS3Parser.accessorModifier_return accessorModifier161 = null;

        AS3Parser.formalParameterList_return formalParameterList163 = null;

        AS3Parser.type_return type165 = null;

        AS3Parser.semic_return semic166 = null;

        AS3Parser.memberModifiers_return memberModifiers167 = null;

        AS3Parser.accessorModifier_return accessorModifier169 = null;

        AS3Parser.formalParameterList_return formalParameterList171 = null;

        AS3Parser.type_return type173 = null;

        AS3Parser.semic_return semic174 = null;


        Object FUNCTION160_tree=null;
        Object IDENTIFIER162_tree=null;
        Object COLON164_tree=null;
        Object FUNCTION168_tree=null;
        Object NAMESPACE170_tree=null;
        Object COLON172_tree=null;
        RewriteRuleTokenStream stream_NAMESPACE=new RewriteRuleTokenStream(adaptor,"token NAMESPACE");
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleTokenStream stream_FUNCTION=new RewriteRuleTokenStream(adaptor,"token FUNCTION");
        RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
        RewriteRuleSubtreeStream stream_accessorModifier=new RewriteRuleSubtreeStream(adaptor,"rule accessorModifier");
        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
        RewriteRuleSubtreeStream stream_memberModifiers=new RewriteRuleSubtreeStream(adaptor,"rule memberModifiers");
        try {
            // com/shin1ogawa/as3/AS3.g:1079:2: ( ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? semic -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList ) | ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? semic -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList ) )
            int alt56=2;
            alt56 = dfa56.predict(input);
            switch (alt56) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1079:4: ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? semic
                    {
                    // com/shin1ogawa/as3/AS3.g:1079:4: ( memberModifiers )?
                    int alt50=2;
                    int LA50_0 = input.LA(1);

                    if ( (LA50_0==INTERNAL||LA50_0==NATIVE||(LA50_0>=PRIVATE && LA50_0<=PUBLIC)||(LA50_0>=DYNAMIC && LA50_0<=STATIC)||LA50_0==IDENTIFIER) ) {
                        alt50=1;
                    }
                    switch (alt50) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                            {
                            pushFollow(FOLLOW_memberModifiers_in_interfaceFunctionDeclaration3826);
                            memberModifiers159=memberModifiers();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers159.getTree());

                            }
                            break;

                    }

                    FUNCTION160=(Token)match(input,FUNCTION,FOLLOW_FUNCTION_in_interfaceFunctionDeclaration3829); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_FUNCTION.add(FUNCTION160);

                    // com/shin1ogawa/as3/AS3.g:1079:30: ( accessorModifier )?
                    int alt51=2;
                    int LA51_0 = input.LA(1);

                    if ( ((LA51_0>=GET && LA51_0<=SET)) ) {
                        alt51=1;
                    }
                    switch (alt51) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: accessorModifier
                            {
                            pushFollow(FOLLOW_accessorModifier_in_interfaceFunctionDeclaration3831);
                            accessorModifier161=accessorModifier();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_accessorModifier.add(accessorModifier161.getTree());

                            }
                            break;

                    }

                    IDENTIFIER162=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceFunctionDeclaration3834); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER162);

                    pushFollow(FOLLOW_formalParameterList_in_interfaceFunctionDeclaration3836);
                    formalParameterList163=formalParameterList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_formalParameterList.add(formalParameterList163.getTree());
                    // com/shin1ogawa/as3/AS3.g:1079:79: ( COLON type )?
                    int alt52=2;
                    int LA52_0 = input.LA(1);

                    if ( (LA52_0==COLON) ) {
                        alt52=1;
                    }
                    switch (alt52) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:1079:80: COLON type
                            {
                            COLON164=(Token)match(input,COLON,FOLLOW_COLON_in_interfaceFunctionDeclaration3839); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_COLON.add(COLON164);

                            pushFollow(FOLLOW_type_in_interfaceFunctionDeclaration3841);
                            type165=type();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_type.add(type165.getTree());

                            }
                            break;

                    }

                    pushFollow(FOLLOW_semic_in_interfaceFunctionDeclaration3846);
                    semic166=semic();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_semic.add(semic166.getTree());


                    // AST REWRITE
                    // elements: type, COLON, formalParameterList, FUNCTION, memberModifiers, accessorModifier, IDENTIFIER
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1081:2: -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList )
                    {
                        // com/shin1ogawa/as3/AS3.g:1081:5: ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.nextNode(), root_1);

                        adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
                        // com/shin1ogawa/as3/AS3.g:1081:27: ( ^( COLON type ) )?
                        if ( stream_type.hasNext()||stream_COLON.hasNext() ) {
                            // com/shin1ogawa/as3/AS3.g:1081:27: ^( COLON type )
                            {
                            Object root_2 = (Object)adaptor.nil();
                            root_2 = (Object)adaptor.becomeRoot(stream_COLON.nextNode(), root_2);

                            adaptor.addChild(root_2, stream_type.nextTree());

                            adaptor.addChild(root_1, root_2);
                            }

                        }
                        stream_type.reset();
                        stream_COLON.reset();
                        // com/shin1ogawa/as3/AS3.g:1081:42: ( accessorModifier )?
                        if ( stream_accessorModifier.hasNext() ) {
                            adaptor.addChild(root_1, stream_accessorModifier.nextTree());

                        }
                        stream_accessorModifier.reset();
                        // com/shin1ogawa/as3/AS3.g:1081:60: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();
                        adaptor.addChild(root_1, stream_formalParameterList.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1082:4: ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? semic
                    {
                    // com/shin1ogawa/as3/AS3.g:1082:4: ( memberModifiers )?
                    int alt53=2;
                    int LA53_0 = input.LA(1);

                    if ( (LA53_0==INTERNAL||LA53_0==NATIVE||(LA53_0>=PRIVATE && LA53_0<=PUBLIC)||(LA53_0>=DYNAMIC && LA53_0<=STATIC)||LA53_0==IDENTIFIER) ) {
                        alt53=1;
                    }
                    switch (alt53) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                            {
                            pushFollow(FOLLOW_memberModifiers_in_interfaceFunctionDeclaration3875);
                            memberModifiers167=memberModifiers();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers167.getTree());

                            }
                            break;

                    }

                    FUNCTION168=(Token)match(input,FUNCTION,FOLLOW_FUNCTION_in_interfaceFunctionDeclaration3878); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_FUNCTION.add(FUNCTION168);

                    // com/shin1ogawa/as3/AS3.g:1082:30: ( accessorModifier )?
                    int alt54=2;
                    int LA54_0 = input.LA(1);

                    if ( ((LA54_0>=GET && LA54_0<=SET)) ) {
                        alt54=1;
                    }
                    switch (alt54) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: accessorModifier
                            {
                            pushFollow(FOLLOW_accessorModifier_in_interfaceFunctionDeclaration3880);
                            accessorModifier169=accessorModifier();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_accessorModifier.add(accessorModifier169.getTree());

                            }
                            break;

                    }

                    NAMESPACE170=(Token)match(input,NAMESPACE,FOLLOW_NAMESPACE_in_interfaceFunctionDeclaration3883); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_NAMESPACE.add(NAMESPACE170);

                    pushFollow(FOLLOW_formalParameterList_in_interfaceFunctionDeclaration3885);
                    formalParameterList171=formalParameterList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_formalParameterList.add(formalParameterList171.getTree());
                    // com/shin1ogawa/as3/AS3.g:1082:78: ( COLON type )?
                    int alt55=2;
                    int LA55_0 = input.LA(1);

                    if ( (LA55_0==COLON) ) {
                        alt55=1;
                    }
                    switch (alt55) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:1082:79: COLON type
                            {
                            COLON172=(Token)match(input,COLON,FOLLOW_COLON_in_interfaceFunctionDeclaration3888); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_COLON.add(COLON172);

                            pushFollow(FOLLOW_type_in_interfaceFunctionDeclaration3890);
                            type173=type();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_type.add(type173.getTree());

                            }
                            break;

                    }

                    pushFollow(FOLLOW_semic_in_interfaceFunctionDeclaration3895);
                    semic174=semic();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_semic.add(semic174.getTree());


                    // AST REWRITE
                    // elements: type, FUNCTION, COLON, formalParameterList, memberModifiers, NAMESPACE, accessorModifier
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1084:2: -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList )
                    {
                        // com/shin1ogawa/as3/AS3.g:1084:5: ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.nextNode(), root_1);

                        adaptor.addChild(root_1, stream_NAMESPACE.nextNode());
                        // com/shin1ogawa/as3/AS3.g:1084:26: ( ^( COLON type ) )?
                        if ( stream_type.hasNext()||stream_COLON.hasNext() ) {
                            // com/shin1ogawa/as3/AS3.g:1084:26: ^( COLON type )
                            {
                            Object root_2 = (Object)adaptor.nil();
                            root_2 = (Object)adaptor.becomeRoot(stream_COLON.nextNode(), root_2);

                            adaptor.addChild(root_2, stream_type.nextTree());

                            adaptor.addChild(root_1, root_2);
                            }

                        }
                        stream_type.reset();
                        stream_COLON.reset();
                        // com/shin1ogawa/as3/AS3.g:1084:41: ( accessorModifier )?
                        if ( stream_accessorModifier.hasNext() ) {
                            adaptor.addChild(root_1, stream_accessorModifier.nextTree());

                        }
                        stream_accessorModifier.reset();
                        // com/shin1ogawa/as3/AS3.g:1084:59: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();
                        adaptor.addChild(root_1, stream_formalParameterList.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "interfaceFunctionDeclaration"

    public static class propertyDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "propertyDeclaration"
    // com/shin1ogawa/as3/AS3.g:1090:1: propertyDeclaration : ( memberModifiers )? ( variableStatement -> ^( variableStatement ( memberModifiers )? ) | constantVarStatement -> ^( constantVarStatement ( memberModifiers )? ) | namespaceDirective -> ^( namespaceDirective ( memberModifiers )? ) ) ;
    public final AS3Parser.propertyDeclaration_return propertyDeclaration() throws RecognitionException {
        AS3Parser.propertyDeclaration_return retval = new AS3Parser.propertyDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.memberModifiers_return memberModifiers175 = null;

        AS3Parser.variableStatement_return variableStatement176 = null;

        AS3Parser.constantVarStatement_return constantVarStatement177 = null;

        AS3Parser.namespaceDirective_return namespaceDirective178 = null;


        RewriteRuleSubtreeStream stream_constantVarStatement=new RewriteRuleSubtreeStream(adaptor,"rule constantVarStatement");
        RewriteRuleSubtreeStream stream_namespaceDirective=new RewriteRuleSubtreeStream(adaptor,"rule namespaceDirective");
        RewriteRuleSubtreeStream stream_memberModifiers=new RewriteRuleSubtreeStream(adaptor,"rule memberModifiers");
        RewriteRuleSubtreeStream stream_variableStatement=new RewriteRuleSubtreeStream(adaptor,"rule variableStatement");
        try {
            // com/shin1ogawa/as3/AS3.g:1091:2: ( ( memberModifiers )? ( variableStatement -> ^( variableStatement ( memberModifiers )? ) | constantVarStatement -> ^( constantVarStatement ( memberModifiers )? ) | namespaceDirective -> ^( namespaceDirective ( memberModifiers )? ) ) )
            // com/shin1ogawa/as3/AS3.g:1091:4: ( memberModifiers )? ( variableStatement -> ^( variableStatement ( memberModifiers )? ) | constantVarStatement -> ^( constantVarStatement ( memberModifiers )? ) | namespaceDirective -> ^( namespaceDirective ( memberModifiers )? ) )
            {
            // com/shin1ogawa/as3/AS3.g:1091:4: ( memberModifiers )?
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==IDENTIFIER) ) {
                int LA57_1 = input.LA(2);

                if ( (synpred144_AS3()) ) {
                    alt57=1;
                }
            }
            else if ( (LA57_0==INTERNAL||LA57_0==NATIVE||(LA57_0>=PRIVATE && LA57_0<=PUBLIC)||(LA57_0>=DYNAMIC && LA57_0<=STATIC)) ) {
                alt57=1;
            }
            switch (alt57) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                    {
                    pushFollow(FOLLOW_memberModifiers_in_propertyDeclaration3934);
                    memberModifiers175=memberModifiers();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers175.getTree());

                    }
                    break;

            }

            // com/shin1ogawa/as3/AS3.g:1091:21: ( variableStatement -> ^( variableStatement ( memberModifiers )? ) | constantVarStatement -> ^( constantVarStatement ( memberModifiers )? ) | namespaceDirective -> ^( namespaceDirective ( memberModifiers )? ) )
            int alt58=3;
            switch ( input.LA(1) ) {
            case VAR:
            case IDENTIFIER:
                {
                alt58=1;
                }
                break;
            case CONST:
                {
                alt58=2;
                }
                break;
            case NAMESPACE:
                {
                alt58=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 58, 0, input);

                throw nvae;
            }

            switch (alt58) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1092:2: variableStatement
                    {
                    pushFollow(FOLLOW_variableStatement_in_propertyDeclaration3940);
                    variableStatement176=variableStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_variableStatement.add(variableStatement176.getTree());


                    // AST REWRITE
                    // elements: memberModifiers, variableStatement
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1092:20: -> ^( variableStatement ( memberModifiers )? )
                    {
                        // com/shin1ogawa/as3/AS3.g:1092:23: ^( variableStatement ( memberModifiers )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_variableStatement.nextNode(), root_1);

                        // com/shin1ogawa/as3/AS3.g:1092:43: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1093:4: constantVarStatement
                    {
                    pushFollow(FOLLOW_constantVarStatement_in_propertyDeclaration3954);
                    constantVarStatement177=constantVarStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_constantVarStatement.add(constantVarStatement177.getTree());


                    // AST REWRITE
                    // elements: constantVarStatement, memberModifiers
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1093:25: -> ^( constantVarStatement ( memberModifiers )? )
                    {
                        // com/shin1ogawa/as3/AS3.g:1093:28: ^( constantVarStatement ( memberModifiers )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_constantVarStatement.nextNode(), root_1);

                        // com/shin1ogawa/as3/AS3.g:1093:51: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1094:4: namespaceDirective
                    {
                    pushFollow(FOLLOW_namespaceDirective_in_propertyDeclaration3968);
                    namespaceDirective178=namespaceDirective();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_namespaceDirective.add(namespaceDirective178.getTree());


                    // AST REWRITE
                    // elements: memberModifiers, namespaceDirective
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1094:23: -> ^( namespaceDirective ( memberModifiers )? )
                    {
                        // com/shin1ogawa/as3/AS3.g:1094:26: ^( namespaceDirective ( memberModifiers )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_namespaceDirective.nextNode(), root_1);

                        // com/shin1ogawa/as3/AS3.g:1094:47: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "propertyDeclaration"

    public static class functionDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "functionDeclaration"
    // com/shin1ogawa/as3/AS3.g:1115:1: functionDeclaration : ( ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? functionBody -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody ) | ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? functionBody -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody ) );
    public final AS3Parser.functionDeclaration_return functionDeclaration() throws RecognitionException {
        AS3Parser.functionDeclaration_return retval = new AS3Parser.functionDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FUNCTION180=null;
        Token IDENTIFIER182=null;
        Token COLON184=null;
        Token FUNCTION188=null;
        Token NAMESPACE190=null;
        Token COLON192=null;
        AS3Parser.memberModifiers_return memberModifiers179 = null;

        AS3Parser.accessorModifier_return accessorModifier181 = null;

        AS3Parser.formalParameterList_return formalParameterList183 = null;

        AS3Parser.type_return type185 = null;

        AS3Parser.functionBody_return functionBody186 = null;

        AS3Parser.memberModifiers_return memberModifiers187 = null;

        AS3Parser.accessorModifier_return accessorModifier189 = null;

        AS3Parser.formalParameterList_return formalParameterList191 = null;

        AS3Parser.type_return type193 = null;

        AS3Parser.functionBody_return functionBody194 = null;


        Object FUNCTION180_tree=null;
        Object IDENTIFIER182_tree=null;
        Object COLON184_tree=null;
        Object FUNCTION188_tree=null;
        Object NAMESPACE190_tree=null;
        Object COLON192_tree=null;
        RewriteRuleTokenStream stream_NAMESPACE=new RewriteRuleTokenStream(adaptor,"token NAMESPACE");
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleTokenStream stream_FUNCTION=new RewriteRuleTokenStream(adaptor,"token FUNCTION");
        RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
        RewriteRuleSubtreeStream stream_accessorModifier=new RewriteRuleSubtreeStream(adaptor,"rule accessorModifier");
        RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
        RewriteRuleSubtreeStream stream_memberModifiers=new RewriteRuleSubtreeStream(adaptor,"rule memberModifiers");
        try {
            // com/shin1ogawa/as3/AS3.g:1116:2: ( ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? functionBody -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody ) | ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? functionBody -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody ) )
            int alt65=2;
            alt65 = dfa65.predict(input);
            switch (alt65) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1116:4: ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? functionBody
                    {
                    // com/shin1ogawa/as3/AS3.g:1116:4: ( memberModifiers )?
                    int alt59=2;
                    int LA59_0 = input.LA(1);

                    if ( (LA59_0==INTERNAL||LA59_0==NATIVE||(LA59_0>=PRIVATE && LA59_0<=PUBLIC)||(LA59_0>=DYNAMIC && LA59_0<=STATIC)||LA59_0==IDENTIFIER) ) {
                        alt59=1;
                    }
                    switch (alt59) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                            {
                            pushFollow(FOLLOW_memberModifiers_in_functionDeclaration3996);
                            memberModifiers179=memberModifiers();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers179.getTree());

                            }
                            break;

                    }

                    FUNCTION180=(Token)match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration3999); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_FUNCTION.add(FUNCTION180);

                    // com/shin1ogawa/as3/AS3.g:1116:30: ( accessorModifier )?
                    int alt60=2;
                    int LA60_0 = input.LA(1);

                    if ( ((LA60_0>=GET && LA60_0<=SET)) ) {
                        alt60=1;
                    }
                    switch (alt60) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: accessorModifier
                            {
                            pushFollow(FOLLOW_accessorModifier_in_functionDeclaration4001);
                            accessorModifier181=accessorModifier();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_accessorModifier.add(accessorModifier181.getTree());

                            }
                            break;

                    }

                    IDENTIFIER182=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_functionDeclaration4004); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER182);

                    pushFollow(FOLLOW_formalParameterList_in_functionDeclaration4006);
                    formalParameterList183=formalParameterList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_formalParameterList.add(formalParameterList183.getTree());
                    // com/shin1ogawa/as3/AS3.g:1116:79: ( COLON type )?
                    int alt61=2;
                    int LA61_0 = input.LA(1);

                    if ( (LA61_0==COLON) ) {
                        alt61=1;
                    }
                    switch (alt61) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:1116:80: COLON type
                            {
                            COLON184=(Token)match(input,COLON,FOLLOW_COLON_in_functionDeclaration4009); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_COLON.add(COLON184);

                            pushFollow(FOLLOW_type_in_functionDeclaration4011);
                            type185=type();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_type.add(type185.getTree());

                            }
                            break;

                    }

                    pushFollow(FOLLOW_functionBody_in_functionDeclaration4016);
                    functionBody186=functionBody();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_functionBody.add(functionBody186.getTree());


                    // AST REWRITE
                    // elements: memberModifiers, IDENTIFIER, formalParameterList, accessorModifier, COLON, type, FUNCTION, functionBody
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1118:2: -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody )
                    {
                        // com/shin1ogawa/as3/AS3.g:1118:5: ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.nextNode(), root_1);

                        adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
                        // com/shin1ogawa/as3/AS3.g:1118:27: ( ^( COLON type ) )?
                        if ( stream_COLON.hasNext()||stream_type.hasNext() ) {
                            // com/shin1ogawa/as3/AS3.g:1118:27: ^( COLON type )
                            {
                            Object root_2 = (Object)adaptor.nil();
                            root_2 = (Object)adaptor.becomeRoot(stream_COLON.nextNode(), root_2);

                            adaptor.addChild(root_2, stream_type.nextTree());

                            adaptor.addChild(root_1, root_2);
                            }

                        }
                        stream_COLON.reset();
                        stream_type.reset();
                        // com/shin1ogawa/as3/AS3.g:1118:42: ( accessorModifier )?
                        if ( stream_accessorModifier.hasNext() ) {
                            adaptor.addChild(root_1, stream_accessorModifier.nextTree());

                        }
                        stream_accessorModifier.reset();
                        // com/shin1ogawa/as3/AS3.g:1118:60: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();
                        adaptor.addChild(root_1, stream_formalParameterList.nextTree());
                        adaptor.addChild(root_1, stream_functionBody.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1119:4: ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? functionBody
                    {
                    // com/shin1ogawa/as3/AS3.g:1119:4: ( memberModifiers )?
                    int alt62=2;
                    int LA62_0 = input.LA(1);

                    if ( (LA62_0==INTERNAL||LA62_0==NATIVE||(LA62_0>=PRIVATE && LA62_0<=PUBLIC)||(LA62_0>=DYNAMIC && LA62_0<=STATIC)||LA62_0==IDENTIFIER) ) {
                        alt62=1;
                    }
                    switch (alt62) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: memberModifiers
                            {
                            pushFollow(FOLLOW_memberModifiers_in_functionDeclaration4047);
                            memberModifiers187=memberModifiers();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_memberModifiers.add(memberModifiers187.getTree());

                            }
                            break;

                    }

                    FUNCTION188=(Token)match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration4050); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_FUNCTION.add(FUNCTION188);

                    // com/shin1ogawa/as3/AS3.g:1119:30: ( accessorModifier )?
                    int alt63=2;
                    int LA63_0 = input.LA(1);

                    if ( ((LA63_0>=GET && LA63_0<=SET)) ) {
                        alt63=1;
                    }
                    switch (alt63) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:0:0: accessorModifier
                            {
                            pushFollow(FOLLOW_accessorModifier_in_functionDeclaration4052);
                            accessorModifier189=accessorModifier();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_accessorModifier.add(accessorModifier189.getTree());

                            }
                            break;

                    }

                    NAMESPACE190=(Token)match(input,NAMESPACE,FOLLOW_NAMESPACE_in_functionDeclaration4055); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_NAMESPACE.add(NAMESPACE190);

                    pushFollow(FOLLOW_formalParameterList_in_functionDeclaration4057);
                    formalParameterList191=formalParameterList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_formalParameterList.add(formalParameterList191.getTree());
                    // com/shin1ogawa/as3/AS3.g:1119:78: ( COLON type )?
                    int alt64=2;
                    int LA64_0 = input.LA(1);

                    if ( (LA64_0==COLON) ) {
                        alt64=1;
                    }
                    switch (alt64) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:1119:79: COLON type
                            {
                            COLON192=(Token)match(input,COLON,FOLLOW_COLON_in_functionDeclaration4060); if (state.failed) return retval; 
                            if ( state.backtracking==0 ) stream_COLON.add(COLON192);

                            pushFollow(FOLLOW_type_in_functionDeclaration4062);
                            type193=type();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) stream_type.add(type193.getTree());

                            }
                            break;

                    }

                    pushFollow(FOLLOW_functionBody_in_functionDeclaration4067);
                    functionBody194=functionBody();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_functionBody.add(functionBody194.getTree());


                    // AST REWRITE
                    // elements: formalParameterList, memberModifiers, accessorModifier, functionBody, COLON, type, NAMESPACE, FUNCTION
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    if ( state.backtracking==0 ) {
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1121:2: -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody )
                    {
                        // com/shin1ogawa/as3/AS3.g:1121:5: ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.nextNode(), root_1);

                        adaptor.addChild(root_1, stream_NAMESPACE.nextNode());
                        // com/shin1ogawa/as3/AS3.g:1121:26: ( ^( COLON type ) )?
                        if ( stream_COLON.hasNext()||stream_type.hasNext() ) {
                            // com/shin1ogawa/as3/AS3.g:1121:26: ^( COLON type )
                            {
                            Object root_2 = (Object)adaptor.nil();
                            root_2 = (Object)adaptor.becomeRoot(stream_COLON.nextNode(), root_2);

                            adaptor.addChild(root_2, stream_type.nextTree());

                            adaptor.addChild(root_1, root_2);
                            }

                        }
                        stream_COLON.reset();
                        stream_type.reset();
                        // com/shin1ogawa/as3/AS3.g:1121:41: ( accessorModifier )?
                        if ( stream_accessorModifier.hasNext() ) {
                            adaptor.addChild(root_1, stream_accessorModifier.nextTree());

                        }
                        stream_accessorModifier.reset();
                        // com/shin1ogawa/as3/AS3.g:1121:59: ( memberModifiers )?
                        if ( stream_memberModifiers.hasNext() ) {
                            adaptor.addChild(root_1, stream_memberModifiers.nextTree());

                        }
                        stream_memberModifiers.reset();
                        adaptor.addChild(root_1, stream_formalParameterList.nextTree());
                        adaptor.addChild(root_1, stream_functionBody.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}
                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "functionDeclaration"

    public static class accessorModifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "accessorModifier"
    // com/shin1ogawa/as3/AS3.g:1125:1: accessorModifier : ( SET | GET );
    public final AS3Parser.accessorModifier_return accessorModifier() throws RecognitionException {
        AS3Parser.accessorModifier_return retval = new AS3Parser.accessorModifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set195=null;

        Object set195_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1126:2: ( SET | GET )
            // com/shin1ogawa/as3/AS3.g:
            {
            root_0 = (Object)adaptor.nil();

            set195=(Token)input.LT(1);
            if ( (input.LA(1)>=GET && input.LA(1)<=SET) ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set195));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "accessorModifier"

    public static class functionExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "functionExpression"
    // com/shin1ogawa/as3/AS3.g:1129:1: functionExpression : FUNCTION ( IDENTIFIER )? formalParameterList ( COLON type )? functionBody ;
    public final AS3Parser.functionExpression_return functionExpression() throws RecognitionException {
        AS3Parser.functionExpression_return retval = new AS3Parser.functionExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FUNCTION196=null;
        Token IDENTIFIER197=null;
        Token COLON199=null;
        AS3Parser.formalParameterList_return formalParameterList198 = null;

        AS3Parser.type_return type200 = null;

        AS3Parser.functionBody_return functionBody201 = null;


        Object FUNCTION196_tree=null;
        Object IDENTIFIER197_tree=null;
        Object COLON199_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1130:2: ( FUNCTION ( IDENTIFIER )? formalParameterList ( COLON type )? functionBody )
            // com/shin1ogawa/as3/AS3.g:1130:4: FUNCTION ( IDENTIFIER )? formalParameterList ( COLON type )? functionBody
            {
            root_0 = (Object)adaptor.nil();

            FUNCTION196=(Token)match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression4118); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            FUNCTION196_tree = (Object)adaptor.create(FUNCTION196);
            adaptor.addChild(root_0, FUNCTION196_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1130:13: ( IDENTIFIER )?
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==IDENTIFIER) ) {
                alt66=1;
            }
            switch (alt66) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1130:14: IDENTIFIER
                    {
                    IDENTIFIER197=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_functionExpression4121); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER197_tree = (Object)adaptor.create(IDENTIFIER197);
                    adaptor.addChild(root_0, IDENTIFIER197_tree);
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_formalParameterList_in_functionExpression4125);
            formalParameterList198=formalParameterList();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, formalParameterList198.getTree());
            // com/shin1ogawa/as3/AS3.g:1130:47: ( COLON type )?
            int alt67=2;
            int LA67_0 = input.LA(1);

            if ( (LA67_0==COLON) ) {
                alt67=1;
            }
            switch (alt67) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1130:48: COLON type
                    {
                    COLON199=(Token)match(input,COLON,FOLLOW_COLON_in_functionExpression4128); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    COLON199_tree = (Object)adaptor.create(COLON199);
                    adaptor.addChild(root_0, COLON199_tree);
                    }
                    pushFollow(FOLLOW_type_in_functionExpression4130);
                    type200=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, type200.getTree());

                    }
                    break;

            }

            pushFollow(FOLLOW_functionBody_in_functionExpression4134);
            functionBody201=functionBody();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, functionBody201.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "functionExpression"

    public static class formalParameterList_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "formalParameterList"
    // com/shin1ogawa/as3/AS3.g:1133:1: formalParameterList : LPAREN ( formalParameterListInner )? RPAREN -> ^( LPAREN ( formalParameterListInner )? ) ;
    public final AS3Parser.formalParameterList_return formalParameterList() throws RecognitionException {
        AS3Parser.formalParameterList_return retval = new AS3Parser.formalParameterList_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LPAREN202=null;
        Token RPAREN204=null;
        AS3Parser.formalParameterListInner_return formalParameterListInner203 = null;


        Object LPAREN202_tree=null;
        Object RPAREN204_tree=null;
        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
        RewriteRuleSubtreeStream stream_formalParameterListInner=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterListInner");
        try {
            // com/shin1ogawa/as3/AS3.g:1134:2: ( LPAREN ( formalParameterListInner )? RPAREN -> ^( LPAREN ( formalParameterListInner )? ) )
            // com/shin1ogawa/as3/AS3.g:1134:4: LPAREN ( formalParameterListInner )? RPAREN
            {
            LPAREN202=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList4145); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN202);

            // com/shin1ogawa/as3/AS3.g:1134:11: ( formalParameterListInner )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==NATIVE||LA68_0==TO||(LA68_0>=EACH && LA68_0<=NAMESPACE)||(LA68_0>=DYNAMIC && LA68_0<=STATIC)||LA68_0==ELLIPSIS||LA68_0==IDENTIFIER) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: formalParameterListInner
                    {
                    pushFollow(FOLLOW_formalParameterListInner_in_formalParameterList4147);
                    formalParameterListInner203=formalParameterListInner();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_formalParameterListInner.add(formalParameterListInner203.getTree());

                    }
                    break;

            }

            RPAREN204=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList4150); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN204);



            // AST REWRITE
            // elements: formalParameterListInner, LPAREN
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1135:2: -> ^( LPAREN ( formalParameterListInner )? )
            {
                // com/shin1ogawa/as3/AS3.g:1135:5: ^( LPAREN ( formalParameterListInner )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_LPAREN.nextNode(), root_1);

                // com/shin1ogawa/as3/AS3.g:1135:14: ( formalParameterListInner )?
                if ( stream_formalParameterListInner.hasNext() ) {
                    adaptor.addChild(root_1, stream_formalParameterListInner.nextTree());

                }
                stream_formalParameterListInner.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "formalParameterList"

    public static class formalParameterListInner_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "formalParameterListInner"
    // com/shin1ogawa/as3/AS3.g:1137:1: formalParameterListInner : ( ( variableDeclaration ( COMMA variableDeclaration )* ( COMMA formalEllipsisParameter )? ) | formalEllipsisParameter );
    public final AS3Parser.formalParameterListInner_return formalParameterListInner() throws RecognitionException {
        AS3Parser.formalParameterListInner_return retval = new AS3Parser.formalParameterListInner_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA206=null;
        Token COMMA208=null;
        AS3Parser.variableDeclaration_return variableDeclaration205 = null;

        AS3Parser.variableDeclaration_return variableDeclaration207 = null;

        AS3Parser.formalEllipsisParameter_return formalEllipsisParameter209 = null;

        AS3Parser.formalEllipsisParameter_return formalEllipsisParameter210 = null;


        Object COMMA206_tree=null;
        Object COMMA208_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1138:2: ( ( variableDeclaration ( COMMA variableDeclaration )* ( COMMA formalEllipsisParameter )? ) | formalEllipsisParameter )
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( (LA71_0==NATIVE||LA71_0==TO||(LA71_0>=EACH && LA71_0<=NAMESPACE)||(LA71_0>=DYNAMIC && LA71_0<=STATIC)||LA71_0==IDENTIFIER) ) {
                alt71=1;
            }
            else if ( (LA71_0==ELLIPSIS) ) {
                alt71=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 71, 0, input);

                throw nvae;
            }
            switch (alt71) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1138:4: ( variableDeclaration ( COMMA variableDeclaration )* ( COMMA formalEllipsisParameter )? )
                    {
                    root_0 = (Object)adaptor.nil();

                    // com/shin1ogawa/as3/AS3.g:1138:4: ( variableDeclaration ( COMMA variableDeclaration )* ( COMMA formalEllipsisParameter )? )
                    // com/shin1ogawa/as3/AS3.g:1138:5: variableDeclaration ( COMMA variableDeclaration )* ( COMMA formalEllipsisParameter )?
                    {
                    pushFollow(FOLLOW_variableDeclaration_in_formalParameterListInner4171);
                    variableDeclaration205=variableDeclaration();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclaration205.getTree());
                    // com/shin1ogawa/as3/AS3.g:1138:25: ( COMMA variableDeclaration )*
                    loop69:
                    do {
                        int alt69=2;
                        int LA69_0 = input.LA(1);

                        if ( (LA69_0==COMMA) ) {
                            int LA69_1 = input.LA(2);

                            if ( (LA69_1==NATIVE||LA69_1==TO||(LA69_1>=EACH && LA69_1<=NAMESPACE)||(LA69_1>=DYNAMIC && LA69_1<=STATIC)||LA69_1==IDENTIFIER) ) {
                                alt69=1;
                            }


                        }


                        switch (alt69) {
                    	case 1 :
                    	    // com/shin1ogawa/as3/AS3.g:1138:26: COMMA variableDeclaration
                    	    {
                    	    COMMA206=(Token)match(input,COMMA,FOLLOW_COMMA_in_formalParameterListInner4174); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {
                    	    COMMA206_tree = (Object)adaptor.create(COMMA206);
                    	    adaptor.addChild(root_0, COMMA206_tree);
                    	    }
                    	    pushFollow(FOLLOW_variableDeclaration_in_formalParameterListInner4176);
                    	    variableDeclaration207=variableDeclaration();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclaration207.getTree());

                    	    }
                    	    break;

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

                    // com/shin1ogawa/as3/AS3.g:1138:54: ( COMMA formalEllipsisParameter )?
                    int alt70=2;
                    int LA70_0 = input.LA(1);

                    if ( (LA70_0==COMMA) ) {
                        alt70=1;
                    }
                    switch (alt70) {
                        case 1 :
                            // com/shin1ogawa/as3/AS3.g:1138:55: COMMA formalEllipsisParameter
                            {
                            COMMA208=(Token)match(input,COMMA,FOLLOW_COMMA_in_formalParameterListInner4181); if (state.failed) return retval;
                            if ( state.backtracking==0 ) {
                            COMMA208_tree = (Object)adaptor.create(COMMA208);
                            adaptor.addChild(root_0, COMMA208_tree);
                            }
                            pushFollow(FOLLOW_formalEllipsisParameter_in_formalParameterListInner4183);
                            formalEllipsisParameter209=formalEllipsisParameter();

                            state._fsp--;
                            if (state.failed) return retval;
                            if ( state.backtracking==0 ) adaptor.addChild(root_0, formalEllipsisParameter209.getTree());

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1139:4: formalEllipsisParameter
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_formalEllipsisParameter_in_formalParameterListInner4191);
                    formalEllipsisParameter210=formalEllipsisParameter();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, formalEllipsisParameter210.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "formalParameterListInner"

    public static class formalEllipsisParameter_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "formalEllipsisParameter"
    // com/shin1ogawa/as3/AS3.g:1141:1: formalEllipsisParameter : ELLIPSIS variableIdentifierDecl -> ^( variableIdentifierDecl ELLIPSIS ) ;
    public final AS3Parser.formalEllipsisParameter_return formalEllipsisParameter() throws RecognitionException {
        AS3Parser.formalEllipsisParameter_return retval = new AS3Parser.formalEllipsisParameter_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token ELLIPSIS211=null;
        AS3Parser.variableIdentifierDecl_return variableIdentifierDecl212 = null;


        Object ELLIPSIS211_tree=null;
        RewriteRuleTokenStream stream_ELLIPSIS=new RewriteRuleTokenStream(adaptor,"token ELLIPSIS");
        RewriteRuleSubtreeStream stream_variableIdentifierDecl=new RewriteRuleSubtreeStream(adaptor,"rule variableIdentifierDecl");
        try {
            // com/shin1ogawa/as3/AS3.g:1142:2: ( ELLIPSIS variableIdentifierDecl -> ^( variableIdentifierDecl ELLIPSIS ) )
            // com/shin1ogawa/as3/AS3.g:1142:4: ELLIPSIS variableIdentifierDecl
            {
            ELLIPSIS211=(Token)match(input,ELLIPSIS,FOLLOW_ELLIPSIS_in_formalEllipsisParameter4201); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_ELLIPSIS.add(ELLIPSIS211);

            pushFollow(FOLLOW_variableIdentifierDecl_in_formalEllipsisParameter4203);
            variableIdentifierDecl212=variableIdentifierDecl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_variableIdentifierDecl.add(variableIdentifierDecl212.getTree());


            // AST REWRITE
            // elements: variableIdentifierDecl, ELLIPSIS
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1142:36: -> ^( variableIdentifierDecl ELLIPSIS )
            {
                // com/shin1ogawa/as3/AS3.g:1142:39: ^( variableIdentifierDecl ELLIPSIS )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_variableIdentifierDecl.nextNode(), root_1);

                adaptor.addChild(root_1, stream_ELLIPSIS.nextNode());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "formalEllipsisParameter"

    public static class functionBody_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "functionBody"
    // com/shin1ogawa/as3/AS3.g:1145:1: functionBody : LCURLY ( statement | functionDeclaration )* RCURLY ;
    public final AS3Parser.functionBody_return functionBody() throws RecognitionException {
        AS3Parser.functionBody_return retval = new AS3Parser.functionBody_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LCURLY213=null;
        Token RCURLY216=null;
        AS3Parser.statement_return statement214 = null;

        AS3Parser.functionDeclaration_return functionDeclaration215 = null;


        Object LCURLY213_tree=null;
        Object RCURLY216_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1146:2: ( LCURLY ( statement | functionDeclaration )* RCURLY )
            // com/shin1ogawa/as3/AS3.g:1146:4: LCURLY ( statement | functionDeclaration )* RCURLY
            {
            root_0 = (Object)adaptor.nil();

            LCURLY213=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_functionBody4222); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY213_tree = (Object)adaptor.create(LCURLY213);
            root_0 = (Object)adaptor.becomeRoot(LCURLY213_tree, root_0);
            }
            // com/shin1ogawa/as3/AS3.g:1146:12: ( statement | functionDeclaration )*
            loop72:
            do {
                int alt72=3;
                alt72 = dfa72.predict(input);
                switch (alt72) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1146:13: statement
            	    {
            	    pushFollow(FOLLOW_statement_in_functionBody4226);
            	    statement214=statement();

            	    state._fsp--;
            	    if (state.failed) return retval;

            	    }
            	    break;
            	case 2 :
            	    // com/shin1ogawa/as3/AS3.g:1146:24: functionDeclaration
            	    {
            	    pushFollow(FOLLOW_functionDeclaration_in_functionBody4229);
            	    functionDeclaration215=functionDeclaration();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, functionDeclaration215.getTree());

            	    }
            	    break;

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

            RCURLY216=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_functionBody4233); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY216_tree = (Object)adaptor.create(RCURLY216);
            adaptor.addChild(root_0, RCURLY216_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "functionBody"

    public static class memberModifiers_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "memberModifiers"
    // com/shin1ogawa/as3/AS3.g:1151:1: memberModifiers : ( memberModifier )+ ;
    public final AS3Parser.memberModifiers_return memberModifiers() throws RecognitionException {
        AS3Parser.memberModifiers_return retval = new AS3Parser.memberModifiers_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.memberModifier_return memberModifier217 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1152:2: ( ( memberModifier )+ )
            // com/shin1ogawa/as3/AS3.g:1152:4: ( memberModifier )+
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1152:4: ( memberModifier )+
            int cnt73=0;
            loop73:
            do {
                int alt73=2;
                int LA73_0 = input.LA(1);

                if ( (LA73_0==IDENTIFIER) ) {
                    int LA73_2 = input.LA(2);

                    if ( (synpred163_AS3()) ) {
                        alt73=1;
                    }


                }
                else if ( (LA73_0==INTERNAL||LA73_0==NATIVE||(LA73_0>=PRIVATE && LA73_0<=PUBLIC)||(LA73_0>=DYNAMIC && LA73_0<=STATIC)) ) {
                    alt73=1;
                }


                switch (alt73) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: memberModifier
            	    {
            	    pushFollow(FOLLOW_memberModifier_in_memberModifiers4247);
            	    memberModifier217=memberModifier();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, memberModifier217.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "memberModifiers"

    public static class memberModifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "memberModifier"
    // com/shin1ogawa/as3/AS3.g:1158:1: memberModifier : ( DYNAMIC | FINAL | INTERNAL | NATIVE | OVERRIDE | PRIVATE | PROTECTED | PUBLIC | STATIC | IDENTIFIER ) ;
    public final AS3Parser.memberModifier_return memberModifier() throws RecognitionException {
        AS3Parser.memberModifier_return retval = new AS3Parser.memberModifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set218=null;

        Object set218_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1159:2: ( ( DYNAMIC | FINAL | INTERNAL | NATIVE | OVERRIDE | PRIVATE | PROTECTED | PUBLIC | STATIC | IDENTIFIER ) )
            // com/shin1ogawa/as3/AS3.g:1159:4: ( DYNAMIC | FINAL | INTERNAL | NATIVE | OVERRIDE | PRIVATE | PROTECTED | PUBLIC | STATIC | IDENTIFIER )
            {
            root_0 = (Object)adaptor.nil();

            set218=(Token)input.LT(1);
            if ( input.LA(1)==INTERNAL||input.LA(1)==NATIVE||(input.LA(1)>=PRIVATE && input.LA(1)<=PUBLIC)||(input.LA(1)>=DYNAMIC && input.LA(1)<=STATIC)||input.LA(1)==IDENTIFIER ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set218));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "memberModifier"

    public static class statement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "statement"
    // com/shin1ogawa/as3/AS3.g:1170:1: statement : ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement ) ;
    public final AS3Parser.statement_return statement() throws RecognitionException {
        AS3Parser.statement_return retval = new AS3Parser.statement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.blockStatement_return blockStatement219 = null;

        AS3Parser.directive_return directive220 = null;

        AS3Parser.namespaceDirective_return namespaceDirective221 = null;

        AS3Parser.expression_return expression222 = null;

        AS3Parser.semic_return semic223 = null;

        AS3Parser.constantVarStatement_return constantVarStatement224 = null;

        AS3Parser.tryStatement_return tryStatement225 = null;

        AS3Parser.labelledStatement_return labelledStatement226 = null;

        AS3Parser.switchStatement_return switchStatement227 = null;

        AS3Parser.withStatement_return withStatement228 = null;

        AS3Parser.returnStatement_return returnStatement229 = null;

        AS3Parser.breakStatement_return breakStatement230 = null;

        AS3Parser.continueStatement_return continueStatement231 = null;

        AS3Parser.forStatement_return forStatement232 = null;

        AS3Parser.forInStatement_return forInStatement233 = null;

        AS3Parser.forEachInStatement_return forEachInStatement234 = null;

        AS3Parser.doWhileStatement_return doWhileStatement235 = null;

        AS3Parser.whileStatement_return whileStatement236 = null;

        AS3Parser.ifStatement_return ifStatement237 = null;

        AS3Parser.emptyStatement_return emptyStatement238 = null;

        AS3Parser.variableStatement_return variableStatement239 = null;

        AS3Parser.throwStatement_return throwStatement240 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1171:2: ( ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement ) )
            // com/shin1ogawa/as3/AS3.g:1171:4: ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1171:4: ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement )
            int alt74=21;
            alt74 = dfa74.predict(input);
            switch (alt74) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1171:5: blockStatement
                    {
                    pushFollow(FOLLOW_blockStatement_in_statement4324);
                    blockStatement219=blockStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, blockStatement219.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1171:22: directive
                    {
                    pushFollow(FOLLOW_directive_in_statement4328);
                    directive220=directive();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, directive220.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1171:34: namespaceDirective
                    {
                    pushFollow(FOLLOW_namespaceDirective_in_statement4332);
                    namespaceDirective221=namespaceDirective();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, namespaceDirective221.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:1171:55: expression semic
                    {
                    pushFollow(FOLLOW_expression_in_statement4336);
                    expression222=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression222.getTree());
                    pushFollow(FOLLOW_semic_in_statement4338);
                    semic223=semic();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, semic223.getTree());

                    }
                    break;
                case 5 :
                    // com/shin1ogawa/as3/AS3.g:1172:4: constantVarStatement
                    {
                    pushFollow(FOLLOW_constantVarStatement_in_statement4344);
                    constantVarStatement224=constantVarStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, constantVarStatement224.getTree());

                    }
                    break;
                case 6 :
                    // com/shin1ogawa/as3/AS3.g:1172:27: tryStatement
                    {
                    pushFollow(FOLLOW_tryStatement_in_statement4348);
                    tryStatement225=tryStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, tryStatement225.getTree());

                    }
                    break;
                case 7 :
                    // com/shin1ogawa/as3/AS3.g:1172:42: labelledStatement
                    {
                    pushFollow(FOLLOW_labelledStatement_in_statement4352);
                    labelledStatement226=labelledStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, labelledStatement226.getTree());

                    }
                    break;
                case 8 :
                    // com/shin1ogawa/as3/AS3.g:1172:62: switchStatement
                    {
                    pushFollow(FOLLOW_switchStatement_in_statement4356);
                    switchStatement227=switchStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, switchStatement227.getTree());

                    }
                    break;
                case 9 :
                    // com/shin1ogawa/as3/AS3.g:1173:4: withStatement
                    {
                    pushFollow(FOLLOW_withStatement_in_statement4362);
                    withStatement228=withStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, withStatement228.getTree());

                    }
                    break;
                case 10 :
                    // com/shin1ogawa/as3/AS3.g:1173:20: returnStatement
                    {
                    pushFollow(FOLLOW_returnStatement_in_statement4366);
                    returnStatement229=returnStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, returnStatement229.getTree());

                    }
                    break;
                case 11 :
                    // com/shin1ogawa/as3/AS3.g:1173:38: breakStatement
                    {
                    pushFollow(FOLLOW_breakStatement_in_statement4370);
                    breakStatement230=breakStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, breakStatement230.getTree());

                    }
                    break;
                case 12 :
                    // com/shin1ogawa/as3/AS3.g:1173:55: continueStatement
                    {
                    pushFollow(FOLLOW_continueStatement_in_statement4374);
                    continueStatement231=continueStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, continueStatement231.getTree());

                    }
                    break;
                case 13 :
                    // com/shin1ogawa/as3/AS3.g:1174:4: forStatement
                    {
                    pushFollow(FOLLOW_forStatement_in_statement4380);
                    forStatement232=forStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, forStatement232.getTree());

                    }
                    break;
                case 14 :
                    // com/shin1ogawa/as3/AS3.g:1174:19: forInStatement
                    {
                    pushFollow(FOLLOW_forInStatement_in_statement4384);
                    forInStatement233=forInStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, forInStatement233.getTree());

                    }
                    break;
                case 15 :
                    // com/shin1ogawa/as3/AS3.g:1174:36: forEachInStatement
                    {
                    pushFollow(FOLLOW_forEachInStatement_in_statement4388);
                    forEachInStatement234=forEachInStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, forEachInStatement234.getTree());

                    }
                    break;
                case 16 :
                    // com/shin1ogawa/as3/AS3.g:1174:57: doWhileStatement
                    {
                    pushFollow(FOLLOW_doWhileStatement_in_statement4392);
                    doWhileStatement235=doWhileStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, doWhileStatement235.getTree());

                    }
                    break;
                case 17 :
                    // com/shin1ogawa/as3/AS3.g:1175:4: whileStatement
                    {
                    pushFollow(FOLLOW_whileStatement_in_statement4398);
                    whileStatement236=whileStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, whileStatement236.getTree());

                    }
                    break;
                case 18 :
                    // com/shin1ogawa/as3/AS3.g:1175:21: ifStatement
                    {
                    pushFollow(FOLLOW_ifStatement_in_statement4402);
                    ifStatement237=ifStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, ifStatement237.getTree());

                    }
                    break;
                case 19 :
                    // com/shin1ogawa/as3/AS3.g:1175:35: emptyStatement
                    {
                    pushFollow(FOLLOW_emptyStatement_in_statement4406);
                    emptyStatement238=emptyStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, emptyStatement238.getTree());

                    }
                    break;
                case 20 :
                    // com/shin1ogawa/as3/AS3.g:1175:52: variableStatement
                    {
                    pushFollow(FOLLOW_variableStatement_in_statement4410);
                    variableStatement239=variableStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableStatement239.getTree());

                    }
                    break;
                case 21 :
                    // com/shin1ogawa/as3/AS3.g:1175:72: throwStatement
                    {
                    pushFollow(FOLLOW_throwStatement_in_statement4414);
                    throwStatement240=throwStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, throwStatement240.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "statement"

    public static class blockStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "blockStatement"
    // com/shin1ogawa/as3/AS3.g:1182:1: blockStatement : LCURLY ( statement )* RCURLY ;
    public final AS3Parser.blockStatement_return blockStatement() throws RecognitionException {
        AS3Parser.blockStatement_return retval = new AS3Parser.blockStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LCURLY241=null;
        Token RCURLY243=null;
        AS3Parser.statement_return statement242 = null;


        Object LCURLY241_tree=null;
        Object RCURLY243_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1183:2: ( LCURLY ( statement )* RCURLY )
            // com/shin1ogawa/as3/AS3.g:1183:4: LCURLY ( statement )* RCURLY
            {
            root_0 = (Object)adaptor.nil();

            LCURLY241=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_blockStatement4431); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY241_tree = (Object)adaptor.create(LCURLY241);
            adaptor.addChild(root_0, LCURLY241_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1183:11: ( statement )*
            loop75:
            do {
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( ((LA75_0>=AS && LA75_0<=STATIC)||LA75_0==TRY||LA75_0==VAR||(LA75_0>=WHILE && LA75_0<=WITH)||(LA75_0>=SEMI && LA75_0<=LCURLY)||LA75_0==LPAREN||LA75_0==LBRACK||LA75_0==LT||(LA75_0>=PLUS && LA75_0<=STAR)||(LA75_0>=INC && LA75_0<=DEC)||(LA75_0>=NOT && LA75_0<=INV)||(LA75_0>=XML_AT && LA75_0<=XML_LS_STD)||(LA75_0>=SINGLE_QUOTE_LITERAL && LA75_0<=DOUBLE_QUOTE_LITERAL)||LA75_0==REGULAR_EXPR_LITERAL||LA75_0==HEX_NUMBER_LITERAL||LA75_0==DEC_NUMBER_LITERAL||LA75_0==IDENTIFIER||(LA75_0>=XML_COMMENT && LA75_0<=XML_PI)) ) {
                    alt75=1;
                }


                switch (alt75) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: statement
            	    {
            	    pushFollow(FOLLOW_statement_in_blockStatement4433);
            	    statement242=statement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement242.getTree());

            	    }
            	    break;

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

            RCURLY243=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_blockStatement4436); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY243_tree = (Object)adaptor.create(RCURLY243);
            adaptor.addChild(root_0, RCURLY243_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "blockStatement"

    public static class throwStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "throwStatement"
    // com/shin1ogawa/as3/AS3.g:1187:1: throwStatement : THROW expression semic ;
    public final AS3Parser.throwStatement_return throwStatement() throws RecognitionException {
        AS3Parser.throwStatement_return retval = new AS3Parser.throwStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token THROW244=null;
        AS3Parser.expression_return expression245 = null;

        AS3Parser.semic_return semic246 = null;


        Object THROW244_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1188:2: ( THROW expression semic )
            // com/shin1ogawa/as3/AS3.g:1188:4: THROW expression semic
            {
            root_0 = (Object)adaptor.nil();

            THROW244=(Token)match(input,THROW,FOLLOW_THROW_in_throwStatement4448); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            THROW244_tree = (Object)adaptor.create(THROW244);
            adaptor.addChild(root_0, THROW244_tree);
            }
            pushFollow(FOLLOW_expression_in_throwStatement4450);
            expression245=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression245.getTree());
            pushFollow(FOLLOW_semic_in_throwStatement4452);
            semic246=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic246.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "throwStatement"

    public static class constantVarStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "constantVarStatement"
    // com/shin1ogawa/as3/AS3.g:1192:1: constantVarStatement : CONST variableDeclarationList ( SEMI )? -> ^( CONST variableDeclarationList ) ;
    public final AS3Parser.constantVarStatement_return constantVarStatement() throws RecognitionException {
        AS3Parser.constantVarStatement_return retval = new AS3Parser.constantVarStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token CONST247=null;
        Token SEMI249=null;
        AS3Parser.variableDeclarationList_return variableDeclarationList248 = null;


        Object CONST247_tree=null;
        Object SEMI249_tree=null;
        RewriteRuleTokenStream stream_CONST=new RewriteRuleTokenStream(adaptor,"token CONST");
        RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
        RewriteRuleSubtreeStream stream_variableDeclarationList=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclarationList");
        try {
            // com/shin1ogawa/as3/AS3.g:1193:2: ( CONST variableDeclarationList ( SEMI )? -> ^( CONST variableDeclarationList ) )
            // com/shin1ogawa/as3/AS3.g:1193:4: CONST variableDeclarationList ( SEMI )?
            {
            CONST247=(Token)match(input,CONST,FOLLOW_CONST_in_constantVarStatement4464); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_CONST.add(CONST247);

            pushFollow(FOLLOW_variableDeclarationList_in_constantVarStatement4466);
            variableDeclarationList248=variableDeclarationList();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_variableDeclarationList.add(variableDeclarationList248.getTree());
            // com/shin1ogawa/as3/AS3.g:1193:34: ( SEMI )?
            int alt76=2;
            int LA76_0 = input.LA(1);

            if ( (LA76_0==SEMI) ) {
                int LA76_1 = input.LA(2);

                if ( (synpred194_AS3()) ) {
                    alt76=1;
                }
            }
            switch (alt76) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1193:35: SEMI
                    {
                    SEMI249=(Token)match(input,SEMI,FOLLOW_SEMI_in_constantVarStatement4469); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_SEMI.add(SEMI249);


                    }
                    break;

            }



            // AST REWRITE
            // elements: variableDeclarationList, CONST
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1194:2: -> ^( CONST variableDeclarationList )
            {
                // com/shin1ogawa/as3/AS3.g:1194:5: ^( CONST variableDeclarationList )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_CONST.nextNode(), root_1);

                adaptor.addChild(root_1, stream_variableDeclarationList.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "constantVarStatement"

    public static class useNamespaceDirective_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "useNamespaceDirective"
    // com/shin1ogawa/as3/AS3.g:1199:1: useNamespaceDirective : USE NAMESPACE qualifiedIdentifier ( COMMA qualifiedIdentifier )* semic -> ^( USE ^( NAMESPACE ( qualifiedIdentifier )+ ) semic ) ;
    public final AS3Parser.useNamespaceDirective_return useNamespaceDirective() throws RecognitionException {
        AS3Parser.useNamespaceDirective_return retval = new AS3Parser.useNamespaceDirective_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token USE250=null;
        Token NAMESPACE251=null;
        Token COMMA253=null;
        AS3Parser.qualifiedIdentifier_return qualifiedIdentifier252 = null;

        AS3Parser.qualifiedIdentifier_return qualifiedIdentifier254 = null;

        AS3Parser.semic_return semic255 = null;


        Object USE250_tree=null;
        Object NAMESPACE251_tree=null;
        Object COMMA253_tree=null;
        RewriteRuleTokenStream stream_NAMESPACE=new RewriteRuleTokenStream(adaptor,"token NAMESPACE");
        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
        RewriteRuleTokenStream stream_USE=new RewriteRuleTokenStream(adaptor,"token USE");
        RewriteRuleSubtreeStream stream_qualifiedIdentifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifiedIdentifier");
        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
        try {
            // com/shin1ogawa/as3/AS3.g:1200:2: ( USE NAMESPACE qualifiedIdentifier ( COMMA qualifiedIdentifier )* semic -> ^( USE ^( NAMESPACE ( qualifiedIdentifier )+ ) semic ) )
            // com/shin1ogawa/as3/AS3.g:1200:4: USE NAMESPACE qualifiedIdentifier ( COMMA qualifiedIdentifier )* semic
            {
            USE250=(Token)match(input,USE,FOLLOW_USE_in_useNamespaceDirective4494); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_USE.add(USE250);

            NAMESPACE251=(Token)match(input,NAMESPACE,FOLLOW_NAMESPACE_in_useNamespaceDirective4496); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_NAMESPACE.add(NAMESPACE251);

            pushFollow(FOLLOW_qualifiedIdentifier_in_useNamespaceDirective4498);
            qualifiedIdentifier252=qualifiedIdentifier();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_qualifiedIdentifier.add(qualifiedIdentifier252.getTree());
            // com/shin1ogawa/as3/AS3.g:1200:38: ( COMMA qualifiedIdentifier )*
            loop77:
            do {
                int alt77=2;
                int LA77_0 = input.LA(1);

                if ( (LA77_0==COMMA) ) {
                    alt77=1;
                }


                switch (alt77) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1200:39: COMMA qualifiedIdentifier
            	    {
            	    COMMA253=(Token)match(input,COMMA,FOLLOW_COMMA_in_useNamespaceDirective4501); if (state.failed) return retval; 
            	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA253);

            	    pushFollow(FOLLOW_qualifiedIdentifier_in_useNamespaceDirective4503);
            	    qualifiedIdentifier254=qualifiedIdentifier();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) stream_qualifiedIdentifier.add(qualifiedIdentifier254.getTree());

            	    }
            	    break;

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

            pushFollow(FOLLOW_semic_in_useNamespaceDirective4507);
            semic255=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_semic.add(semic255.getTree());


            // AST REWRITE
            // elements: qualifiedIdentifier, NAMESPACE, USE, semic
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1201:2: -> ^( USE ^( NAMESPACE ( qualifiedIdentifier )+ ) semic )
            {
                // com/shin1ogawa/as3/AS3.g:1201:5: ^( USE ^( NAMESPACE ( qualifiedIdentifier )+ ) semic )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_USE.nextNode(), root_1);

                // com/shin1ogawa/as3/AS3.g:1201:11: ^( NAMESPACE ( qualifiedIdentifier )+ )
                {
                Object root_2 = (Object)adaptor.nil();
                root_2 = (Object)adaptor.becomeRoot(stream_NAMESPACE.nextNode(), root_2);

                if ( !(stream_qualifiedIdentifier.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_qualifiedIdentifier.hasNext() ) {
                    adaptor.addChild(root_2, stream_qualifiedIdentifier.nextTree());

                }
                stream_qualifiedIdentifier.reset();

                adaptor.addChild(root_1, root_2);
                }
                adaptor.addChild(root_1, stream_semic.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "useNamespaceDirective"

    public static class namespaceDirective_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "namespaceDirective"
    // com/shin1ogawa/as3/AS3.g:1206:1: namespaceDirective : NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? semic -> ^( NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? ) ;
    public final AS3Parser.namespaceDirective_return namespaceDirective() throws RecognitionException {
        AS3Parser.namespaceDirective_return retval = new AS3Parser.namespaceDirective_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token NAMESPACE256=null;
        AS3Parser.qualifiedIdentifier_return qualifiedIdentifier257 = null;

        AS3Parser.namespaceDirectiveAssignment_return namespaceDirectiveAssignment258 = null;

        AS3Parser.semic_return semic259 = null;


        Object NAMESPACE256_tree=null;
        RewriteRuleTokenStream stream_NAMESPACE=new RewriteRuleTokenStream(adaptor,"token NAMESPACE");
        RewriteRuleSubtreeStream stream_qualifiedIdentifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifiedIdentifier");
        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
        RewriteRuleSubtreeStream stream_namespaceDirectiveAssignment=new RewriteRuleSubtreeStream(adaptor,"rule namespaceDirectiveAssignment");
        try {
            // com/shin1ogawa/as3/AS3.g:1207:2: ( NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? semic -> ^( NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? ) )
            // com/shin1ogawa/as3/AS3.g:1208:2: NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? semic
            {
            NAMESPACE256=(Token)match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceDirective4538); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_NAMESPACE.add(NAMESPACE256);

            pushFollow(FOLLOW_qualifiedIdentifier_in_namespaceDirective4540);
            qualifiedIdentifier257=qualifiedIdentifier();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_qualifiedIdentifier.add(qualifiedIdentifier257.getTree());
            // com/shin1ogawa/as3/AS3.g:1208:32: ( namespaceDirectiveAssignment )?
            int alt78=2;
            int LA78_0 = input.LA(1);

            if ( (LA78_0==ASSIGN) ) {
                alt78=1;
            }
            switch (alt78) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: namespaceDirectiveAssignment
                    {
                    pushFollow(FOLLOW_namespaceDirectiveAssignment_in_namespaceDirective4542);
                    namespaceDirectiveAssignment258=namespaceDirectiveAssignment();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_namespaceDirectiveAssignment.add(namespaceDirectiveAssignment258.getTree());

                    }
                    break;

            }

            pushFollow(FOLLOW_semic_in_namespaceDirective4545);
            semic259=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_semic.add(semic259.getTree());


            // AST REWRITE
            // elements: NAMESPACE, qualifiedIdentifier, namespaceDirectiveAssignment
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1209:2: -> ^( NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? )
            {
                // com/shin1ogawa/as3/AS3.g:1209:5: ^( NAMESPACE qualifiedIdentifier ( namespaceDirectiveAssignment )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_NAMESPACE.nextNode(), root_1);

                adaptor.addChild(root_1, stream_qualifiedIdentifier.nextTree());
                // com/shin1ogawa/as3/AS3.g:1209:37: ( namespaceDirectiveAssignment )?
                if ( stream_namespaceDirectiveAssignment.hasNext() ) {
                    adaptor.addChild(root_1, stream_namespaceDirectiveAssignment.nextTree());

                }
                stream_namespaceDirectiveAssignment.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "namespaceDirective"

    public static class namespaceDirectiveAssignment_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "namespaceDirectiveAssignment"
    // com/shin1ogawa/as3/AS3.g:1211:1: namespaceDirectiveAssignment : ASSIGN stringLiteral -> ^( ASSIGN stringLiteral ) ;
    public final AS3Parser.namespaceDirectiveAssignment_return namespaceDirectiveAssignment() throws RecognitionException {
        AS3Parser.namespaceDirectiveAssignment_return retval = new AS3Parser.namespaceDirectiveAssignment_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token ASSIGN260=null;
        AS3Parser.stringLiteral_return stringLiteral261 = null;


        Object ASSIGN260_tree=null;
        RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
        RewriteRuleSubtreeStream stream_stringLiteral=new RewriteRuleSubtreeStream(adaptor,"rule stringLiteral");
        try {
            // com/shin1ogawa/as3/AS3.g:1212:2: ( ASSIGN stringLiteral -> ^( ASSIGN stringLiteral ) )
            // com/shin1ogawa/as3/AS3.g:1212:4: ASSIGN stringLiteral
            {
            ASSIGN260=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceDirectiveAssignment4567); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN260);

            pushFollow(FOLLOW_stringLiteral_in_namespaceDirectiveAssignment4569);
            stringLiteral261=stringLiteral();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_stringLiteral.add(stringLiteral261.getTree());


            // AST REWRITE
            // elements: stringLiteral, ASSIGN
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1213:2: -> ^( ASSIGN stringLiteral )
            {
                // com/shin1ogawa/as3/AS3.g:1213:5: ^( ASSIGN stringLiteral )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_ASSIGN.nextNode(), root_1);

                adaptor.addChild(root_1, stream_stringLiteral.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "namespaceDirectiveAssignment"

    public static class tryStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "tryStatement"
    // com/shin1ogawa/as3/AS3.g:1219:1: tryStatement : TRY blockStatement ( ( catchClause )+ finallyClause | ( catchClause )+ | finallyClause ) ;
    public final AS3Parser.tryStatement_return tryStatement() throws RecognitionException {
        AS3Parser.tryStatement_return retval = new AS3Parser.tryStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token TRY262=null;
        AS3Parser.blockStatement_return blockStatement263 = null;

        AS3Parser.catchClause_return catchClause264 = null;

        AS3Parser.finallyClause_return finallyClause265 = null;

        AS3Parser.catchClause_return catchClause266 = null;

        AS3Parser.finallyClause_return finallyClause267 = null;


        Object TRY262_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1220:2: ( TRY blockStatement ( ( catchClause )+ finallyClause | ( catchClause )+ | finallyClause ) )
            // com/shin1ogawa/as3/AS3.g:1220:4: TRY blockStatement ( ( catchClause )+ finallyClause | ( catchClause )+ | finallyClause )
            {
            root_0 = (Object)adaptor.nil();

            TRY262=(Token)match(input,TRY,FOLLOW_TRY_in_tryStatement4592); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            TRY262_tree = (Object)adaptor.create(TRY262);
            adaptor.addChild(root_0, TRY262_tree);
            }
            pushFollow(FOLLOW_blockStatement_in_tryStatement4594);
            blockStatement263=blockStatement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, blockStatement263.getTree());
            // com/shin1ogawa/as3/AS3.g:1220:23: ( ( catchClause )+ finallyClause | ( catchClause )+ | finallyClause )
            int alt81=3;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==CATCH) ) {
                int LA81_1 = input.LA(2);

                if ( (synpred198_AS3()) ) {
                    alt81=1;
                }
                else if ( (synpred200_AS3()) ) {
                    alt81=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 81, 1, input);

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

                throw nvae;
            }
            switch (alt81) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1220:24: ( catchClause )+ finallyClause
                    {
                    // com/shin1ogawa/as3/AS3.g:1220:24: ( catchClause )+
                    int cnt79=0;
                    loop79:
                    do {
                        int alt79=2;
                        int LA79_0 = input.LA(1);

                        if ( (LA79_0==CATCH) ) {
                            alt79=1;
                        }


                        switch (alt79) {
                    	case 1 :
                    	    // com/shin1ogawa/as3/AS3.g:0:0: catchClause
                    	    {
                    	    pushFollow(FOLLOW_catchClause_in_tryStatement4597);
                    	    catchClause264=catchClause();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, catchClause264.getTree());

                    	    }
                    	    break;

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

                    pushFollow(FOLLOW_finallyClause_in_tryStatement4600);
                    finallyClause265=finallyClause();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, finallyClause265.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1220:53: ( catchClause )+
                    {
                    // com/shin1ogawa/as3/AS3.g:1220:53: ( catchClause )+
                    int cnt80=0;
                    loop80:
                    do {
                        int alt80=2;
                        int LA80_0 = input.LA(1);

                        if ( (LA80_0==CATCH) ) {
                            int LA80_2 = input.LA(2);

                            if ( (LA80_2==LPAREN) ) {
                                alt80=1;
                            }


                        }


                        switch (alt80) {
                    	case 1 :
                    	    // com/shin1ogawa/as3/AS3.g:0:0: catchClause
                    	    {
                    	    pushFollow(FOLLOW_catchClause_in_tryStatement4604);
                    	    catchClause266=catchClause();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, catchClause266.getTree());

                    	    }
                    	    break;

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


                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1220:68: finallyClause
                    {
                    pushFollow(FOLLOW_finallyClause_in_tryStatement4609);
                    finallyClause267=finallyClause();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, finallyClause267.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "tryStatement"

    public static class catchClause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "catchClause"
    // com/shin1ogawa/as3/AS3.g:1223:1: catchClause : CATCH LPAREN variableIdentifierDecl RPAREN blockStatement ;
    public final AS3Parser.catchClause_return catchClause() throws RecognitionException {
        AS3Parser.catchClause_return retval = new AS3Parser.catchClause_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token CATCH268=null;
        Token LPAREN269=null;
        Token RPAREN271=null;
        AS3Parser.variableIdentifierDecl_return variableIdentifierDecl270 = null;

        AS3Parser.blockStatement_return blockStatement272 = null;


        Object CATCH268_tree=null;
        Object LPAREN269_tree=null;
        Object RPAREN271_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1224:2: ( CATCH LPAREN variableIdentifierDecl RPAREN blockStatement )
            // com/shin1ogawa/as3/AS3.g:1224:4: CATCH LPAREN variableIdentifierDecl RPAREN blockStatement
            {
            root_0 = (Object)adaptor.nil();

            CATCH268=(Token)match(input,CATCH,FOLLOW_CATCH_in_catchClause4621); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            CATCH268_tree = (Object)adaptor.create(CATCH268);
            adaptor.addChild(root_0, CATCH268_tree);
            }
            LPAREN269=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_catchClause4623); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN269_tree = (Object)adaptor.create(LPAREN269);
            adaptor.addChild(root_0, LPAREN269_tree);
            }
            pushFollow(FOLLOW_variableIdentifierDecl_in_catchClause4625);
            variableIdentifierDecl270=variableIdentifierDecl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, variableIdentifierDecl270.getTree());
            RPAREN271=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_catchClause4627); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN271_tree = (Object)adaptor.create(RPAREN271);
            adaptor.addChild(root_0, RPAREN271_tree);
            }
            pushFollow(FOLLOW_blockStatement_in_catchClause4629);
            blockStatement272=blockStatement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, blockStatement272.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "catchClause"

    public static class finallyClause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "finallyClause"
    // com/shin1ogawa/as3/AS3.g:1227:1: finallyClause : FINALLY blockStatement ;
    public final AS3Parser.finallyClause_return finallyClause() throws RecognitionException {
        AS3Parser.finallyClause_return retval = new AS3Parser.finallyClause_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FINALLY273=null;
        AS3Parser.blockStatement_return blockStatement274 = null;


        Object FINALLY273_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1228:2: ( FINALLY blockStatement )
            // com/shin1ogawa/as3/AS3.g:1228:4: FINALLY blockStatement
            {
            root_0 = (Object)adaptor.nil();

            FINALLY273=(Token)match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause4640); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            FINALLY273_tree = (Object)adaptor.create(FINALLY273);
            adaptor.addChild(root_0, FINALLY273_tree);
            }
            pushFollow(FOLLOW_blockStatement_in_finallyClause4642);
            blockStatement274=blockStatement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, blockStatement274.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "finallyClause"

    public static class labelledStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "labelledStatement"
    // com/shin1ogawa/as3/AS3.g:1233:1: labelledStatement : IDENTIFIER COLON statement ;
    public final AS3Parser.labelledStatement_return labelledStatement() throws RecognitionException {
        AS3Parser.labelledStatement_return retval = new AS3Parser.labelledStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER275=null;
        Token COLON276=null;
        AS3Parser.statement_return statement277 = null;


        Object IDENTIFIER275_tree=null;
        Object COLON276_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1234:2: ( IDENTIFIER COLON statement )
            // com/shin1ogawa/as3/AS3.g:1234:4: IDENTIFIER COLON statement
            {
            root_0 = (Object)adaptor.nil();

            IDENTIFIER275=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_labelledStatement4655); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IDENTIFIER275_tree = (Object)adaptor.create(IDENTIFIER275);
            adaptor.addChild(root_0, IDENTIFIER275_tree);
            }
            COLON276=(Token)match(input,COLON,FOLLOW_COLON_in_labelledStatement4657); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            COLON276_tree = (Object)adaptor.create(COLON276);
            adaptor.addChild(root_0, COLON276_tree);
            }
            pushFollow(FOLLOW_statement_in_labelledStatement4659);
            statement277=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement277.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "labelledStatement"

    public static class switchStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "switchStatement"
    // com/shin1ogawa/as3/AS3.g:1239:1: switchStatement : SWITCH parExpression LCURLY ( switchBlockStatementGroup )* RCURLY ;
    public final AS3Parser.switchStatement_return switchStatement() throws RecognitionException {
        AS3Parser.switchStatement_return retval = new AS3Parser.switchStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token SWITCH278=null;
        Token LCURLY280=null;
        Token RCURLY282=null;
        AS3Parser.parExpression_return parExpression279 = null;

        AS3Parser.switchBlockStatementGroup_return switchBlockStatementGroup281 = null;


        Object SWITCH278_tree=null;
        Object LCURLY280_tree=null;
        Object RCURLY282_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1240:2: ( SWITCH parExpression LCURLY ( switchBlockStatementGroup )* RCURLY )
            // com/shin1ogawa/as3/AS3.g:1240:4: SWITCH parExpression LCURLY ( switchBlockStatementGroup )* RCURLY
            {
            root_0 = (Object)adaptor.nil();

            SWITCH278=(Token)match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement4672); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            SWITCH278_tree = (Object)adaptor.create(SWITCH278);
            adaptor.addChild(root_0, SWITCH278_tree);
            }
            pushFollow(FOLLOW_parExpression_in_switchStatement4674);
            parExpression279=parExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, parExpression279.getTree());
            LCURLY280=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_switchStatement4676); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY280_tree = (Object)adaptor.create(LCURLY280);
            adaptor.addChild(root_0, LCURLY280_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1240:32: ( switchBlockStatementGroup )*
            loop82:
            do {
                int alt82=2;
                int LA82_0 = input.LA(1);

                if ( (LA82_0==CASE||LA82_0==DEFAULT) ) {
                    alt82=1;
                }


                switch (alt82) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: switchBlockStatementGroup
            	    {
            	    pushFollow(FOLLOW_switchBlockStatementGroup_in_switchStatement4678);
            	    switchBlockStatementGroup281=switchBlockStatementGroup();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, switchBlockStatementGroup281.getTree());

            	    }
            	    break;

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

            RCURLY282=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_switchStatement4681); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY282_tree = (Object)adaptor.create(RCURLY282);
            adaptor.addChild(root_0, RCURLY282_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "switchStatement"

    public static class switchBlockStatementGroup_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "switchBlockStatementGroup"
    // com/shin1ogawa/as3/AS3.g:1247:1: switchBlockStatementGroup : switchLabel ( statement )* ( breakStatement )? ;
    public final AS3Parser.switchBlockStatementGroup_return switchBlockStatementGroup() throws RecognitionException {
        AS3Parser.switchBlockStatementGroup_return retval = new AS3Parser.switchBlockStatementGroup_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.switchLabel_return switchLabel283 = null;

        AS3Parser.statement_return statement284 = null;

        AS3Parser.breakStatement_return breakStatement285 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1248:2: ( switchLabel ( statement )* ( breakStatement )? )
            // com/shin1ogawa/as3/AS3.g:1248:4: switchLabel ( statement )* ( breakStatement )?
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup4697);
            switchLabel283=switchLabel();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, switchLabel283.getTree());
            // com/shin1ogawa/as3/AS3.g:1248:16: ( statement )*
            loop83:
            do {
                int alt83=2;
                alt83 = dfa83.predict(input);
                switch (alt83) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:0:0: statement
            	    {
            	    pushFollow(FOLLOW_statement_in_switchBlockStatementGroup4699);
            	    statement284=statement();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement284.getTree());

            	    }
            	    break;

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

            // com/shin1ogawa/as3/AS3.g:1248:27: ( breakStatement )?
            int alt84=2;
            int LA84_0 = input.LA(1);

            if ( (LA84_0==BREAK) ) {
                alt84=1;
            }
            switch (alt84) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: breakStatement
                    {
                    pushFollow(FOLLOW_breakStatement_in_switchBlockStatementGroup4702);
                    breakStatement285=breakStatement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, breakStatement285.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "switchBlockStatementGroup"

    public static class switchLabel_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "switchLabel"
    // com/shin1ogawa/as3/AS3.g:1251:1: switchLabel : ( CASE expression COLON | DEFAULT COLON );
    public final AS3Parser.switchLabel_return switchLabel() throws RecognitionException {
        AS3Parser.switchLabel_return retval = new AS3Parser.switchLabel_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token CASE286=null;
        Token COLON288=null;
        Token DEFAULT289=null;
        Token COLON290=null;
        AS3Parser.expression_return expression287 = null;


        Object CASE286_tree=null;
        Object COLON288_tree=null;
        Object DEFAULT289_tree=null;
        Object COLON290_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1252:2: ( CASE expression COLON | DEFAULT COLON )
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==CASE) ) {
                alt85=1;
            }
            else if ( (LA85_0==DEFAULT) ) {
                alt85=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 85, 0, input);

                throw nvae;
            }
            switch (alt85) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1252:4: CASE expression COLON
                    {
                    root_0 = (Object)adaptor.nil();

                    CASE286=(Token)match(input,CASE,FOLLOW_CASE_in_switchLabel4714); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    CASE286_tree = (Object)adaptor.create(CASE286);
                    adaptor.addChild(root_0, CASE286_tree);
                    }
                    pushFollow(FOLLOW_expression_in_switchLabel4716);
                    expression287=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression287.getTree());
                    COLON288=(Token)match(input,COLON,FOLLOW_COLON_in_switchLabel4718); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    COLON288_tree = (Object)adaptor.create(COLON288);
                    adaptor.addChild(root_0, COLON288_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1252:28: DEFAULT COLON
                    {
                    root_0 = (Object)adaptor.nil();

                    DEFAULT289=(Token)match(input,DEFAULT,FOLLOW_DEFAULT_in_switchLabel4722); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    DEFAULT289_tree = (Object)adaptor.create(DEFAULT289);
                    adaptor.addChild(root_0, DEFAULT289_tree);
                    }
                    COLON290=(Token)match(input,COLON,FOLLOW_COLON_in_switchLabel4724); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    COLON290_tree = (Object)adaptor.create(COLON290);
                    adaptor.addChild(root_0, COLON290_tree);
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "switchLabel"

    public static class withStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "withStatement"
    // com/shin1ogawa/as3/AS3.g:1257:1: withStatement : WITH LPAREN expression RPAREN statement ;
    public final AS3Parser.withStatement_return withStatement() throws RecognitionException {
        AS3Parser.withStatement_return retval = new AS3Parser.withStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token WITH291=null;
        Token LPAREN292=null;
        Token RPAREN294=null;
        AS3Parser.expression_return expression293 = null;

        AS3Parser.statement_return statement295 = null;


        Object WITH291_tree=null;
        Object LPAREN292_tree=null;
        Object RPAREN294_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1258:2: ( WITH LPAREN expression RPAREN statement )
            // com/shin1ogawa/as3/AS3.g:1258:4: WITH LPAREN expression RPAREN statement
            {
            root_0 = (Object)adaptor.nil();

            WITH291=(Token)match(input,WITH,FOLLOW_WITH_in_withStatement4738); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            WITH291_tree = (Object)adaptor.create(WITH291);
            adaptor.addChild(root_0, WITH291_tree);
            }
            LPAREN292=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_withStatement4740); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN292_tree = (Object)adaptor.create(LPAREN292);
            adaptor.addChild(root_0, LPAREN292_tree);
            }
            pushFollow(FOLLOW_expression_in_withStatement4742);
            expression293=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression293.getTree());
            RPAREN294=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_withStatement4744); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN294_tree = (Object)adaptor.create(RPAREN294);
            adaptor.addChild(root_0, RPAREN294_tree);
            }
            pushFollow(FOLLOW_statement_in_withStatement4746);
            statement295=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement295.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "withStatement"

    public static class returnStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "returnStatement"
    // com/shin1ogawa/as3/AS3.g:1263:1: returnStatement : RETURN ( ( expression )? ) semic ;
    public final AS3Parser.returnStatement_return returnStatement() throws RecognitionException {
        AS3Parser.returnStatement_return retval = new AS3Parser.returnStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token RETURN296=null;
        AS3Parser.expression_return expression297 = null;

        AS3Parser.semic_return semic298 = null;


        Object RETURN296_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1264:2: ( RETURN ( ( expression )? ) semic )
            // com/shin1ogawa/as3/AS3.g:1264:4: RETURN ( ( expression )? ) semic
            {
            root_0 = (Object)adaptor.nil();

            RETURN296=(Token)match(input,RETURN,FOLLOW_RETURN_in_returnStatement4759); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RETURN296_tree = (Object)adaptor.create(RETURN296);
            adaptor.addChild(root_0, RETURN296_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1264:11: ( ( expression )? )
            // com/shin1ogawa/as3/AS3.g:1264:12: ( expression )?
            {
            // com/shin1ogawa/as3/AS3.g:1264:12: ( expression )?
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( ((LA86_0>=AS && LA86_0<=STATIC)||LA86_0==VOID||LA86_0==LCURLY||LA86_0==LPAREN||LA86_0==LBRACK||LA86_0==LT||(LA86_0>=PLUS && LA86_0<=STAR)||(LA86_0>=INC && LA86_0<=DEC)||(LA86_0>=NOT && LA86_0<=INV)||(LA86_0>=XML_AT && LA86_0<=XML_LS_STD)||(LA86_0>=SINGLE_QUOTE_LITERAL && LA86_0<=DOUBLE_QUOTE_LITERAL)||LA86_0==REGULAR_EXPR_LITERAL||LA86_0==HEX_NUMBER_LITERAL||LA86_0==DEC_NUMBER_LITERAL||LA86_0==IDENTIFIER||(LA86_0>=XML_COMMENT && LA86_0<=XML_PI)) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: expression
                    {
                    pushFollow(FOLLOW_expression_in_returnStatement4762);
                    expression297=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression297.getTree());

                    }
                    break;

            }


            }

            pushFollow(FOLLOW_semic_in_returnStatement4766);
            semic298=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic298.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "returnStatement"

    public static class breakStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "breakStatement"
    // com/shin1ogawa/as3/AS3.g:1269:1: breakStatement : BREAK ( IDENTIFIER )? semic ;
    public final AS3Parser.breakStatement_return breakStatement() throws RecognitionException {
        AS3Parser.breakStatement_return retval = new AS3Parser.breakStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token BREAK299=null;
        Token IDENTIFIER300=null;
        AS3Parser.semic_return semic301 = null;


        Object BREAK299_tree=null;
        Object IDENTIFIER300_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1270:2: ( BREAK ( IDENTIFIER )? semic )
            // com/shin1ogawa/as3/AS3.g:1270:4: BREAK ( IDENTIFIER )? semic
            {
            root_0 = (Object)adaptor.nil();

            BREAK299=(Token)match(input,BREAK,FOLLOW_BREAK_in_breakStatement4780); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            BREAK299_tree = (Object)adaptor.create(BREAK299);
            adaptor.addChild(root_0, BREAK299_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1270:10: ( IDENTIFIER )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==IDENTIFIER) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1270:11: IDENTIFIER
                    {
                    IDENTIFIER300=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_breakStatement4783); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER300_tree = (Object)adaptor.create(IDENTIFIER300);
                    adaptor.addChild(root_0, IDENTIFIER300_tree);
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_semic_in_breakStatement4787);
            semic301=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic301.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "breakStatement"

    public static class continueStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "continueStatement"
    // com/shin1ogawa/as3/AS3.g:1275:1: continueStatement : CONTINUE ( IDENTIFIER )? semic ;
    public final AS3Parser.continueStatement_return continueStatement() throws RecognitionException {
        AS3Parser.continueStatement_return retval = new AS3Parser.continueStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token CONTINUE302=null;
        Token IDENTIFIER303=null;
        AS3Parser.semic_return semic304 = null;


        Object CONTINUE302_tree=null;
        Object IDENTIFIER303_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1276:2: ( CONTINUE ( IDENTIFIER )? semic )
            // com/shin1ogawa/as3/AS3.g:1276:4: CONTINUE ( IDENTIFIER )? semic
            {
            root_0 = (Object)adaptor.nil();

            CONTINUE302=(Token)match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement4800); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            CONTINUE302_tree = (Object)adaptor.create(CONTINUE302);
            adaptor.addChild(root_0, CONTINUE302_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1276:13: ( IDENTIFIER )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==IDENTIFIER) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1276:14: IDENTIFIER
                    {
                    IDENTIFIER303=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_continueStatement4803); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER303_tree = (Object)adaptor.create(IDENTIFIER303);
                    adaptor.addChild(root_0, IDENTIFIER303_tree);
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_semic_in_continueStatement4807);
            semic304=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic304.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "continueStatement"

    public static class forStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forStatement"
    // com/shin1ogawa/as3/AS3.g:1281:1: forStatement : FOR LPAREN forControl RPAREN statement ;
    public final AS3Parser.forStatement_return forStatement() throws RecognitionException {
        AS3Parser.forStatement_return retval = new AS3Parser.forStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FOR305=null;
        Token LPAREN306=null;
        Token RPAREN308=null;
        AS3Parser.forControl_return forControl307 = null;

        AS3Parser.statement_return statement309 = null;


        Object FOR305_tree=null;
        Object LPAREN306_tree=null;
        Object RPAREN308_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1282:2: ( FOR LPAREN forControl RPAREN statement )
            // com/shin1ogawa/as3/AS3.g:1282:4: FOR LPAREN forControl RPAREN statement
            {
            root_0 = (Object)adaptor.nil();

            FOR305=(Token)match(input,FOR,FOLLOW_FOR_in_forStatement4820); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            FOR305_tree = (Object)adaptor.create(FOR305);
            adaptor.addChild(root_0, FOR305_tree);
            }
            LPAREN306=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_forStatement4822); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN306_tree = (Object)adaptor.create(LPAREN306);
            adaptor.addChild(root_0, LPAREN306_tree);
            }
            pushFollow(FOLLOW_forControl_in_forStatement4824);
            forControl307=forControl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, forControl307.getTree());
            RPAREN308=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_forStatement4826); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN308_tree = (Object)adaptor.create(RPAREN308);
            adaptor.addChild(root_0, RPAREN308_tree);
            }
            pushFollow(FOLLOW_statement_in_forStatement4828);
            statement309=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement309.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forStatement"

    public static class forInStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forInStatement"
    // com/shin1ogawa/as3/AS3.g:1285:1: forInStatement : FOR LPAREN forInControl RPAREN statement ;
    public final AS3Parser.forInStatement_return forInStatement() throws RecognitionException {
        AS3Parser.forInStatement_return retval = new AS3Parser.forInStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FOR310=null;
        Token LPAREN311=null;
        Token RPAREN313=null;
        AS3Parser.forInControl_return forInControl312 = null;

        AS3Parser.statement_return statement314 = null;


        Object FOR310_tree=null;
        Object LPAREN311_tree=null;
        Object RPAREN313_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1286:2: ( FOR LPAREN forInControl RPAREN statement )
            // com/shin1ogawa/as3/AS3.g:1286:4: FOR LPAREN forInControl RPAREN statement
            {
            root_0 = (Object)adaptor.nil();

            FOR310=(Token)match(input,FOR,FOLLOW_FOR_in_forInStatement4839); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            FOR310_tree = (Object)adaptor.create(FOR310);
            adaptor.addChild(root_0, FOR310_tree);
            }
            LPAREN311=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_forInStatement4841); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN311_tree = (Object)adaptor.create(LPAREN311);
            adaptor.addChild(root_0, LPAREN311_tree);
            }
            pushFollow(FOLLOW_forInControl_in_forInStatement4843);
            forInControl312=forInControl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, forInControl312.getTree());
            RPAREN313=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_forInStatement4845); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN313_tree = (Object)adaptor.create(RPAREN313);
            adaptor.addChild(root_0, RPAREN313_tree);
            }
            pushFollow(FOLLOW_statement_in_forInStatement4847);
            statement314=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement314.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forInStatement"

    public static class forEachInStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forEachInStatement"
    // com/shin1ogawa/as3/AS3.g:1289:1: forEachInStatement : FOR EACH LPAREN forInControl RPAREN statement ;
    public final AS3Parser.forEachInStatement_return forEachInStatement() throws RecognitionException {
        AS3Parser.forEachInStatement_return retval = new AS3Parser.forEachInStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token FOR315=null;
        Token EACH316=null;
        Token LPAREN317=null;
        Token RPAREN319=null;
        AS3Parser.forInControl_return forInControl318 = null;

        AS3Parser.statement_return statement320 = null;


        Object FOR315_tree=null;
        Object EACH316_tree=null;
        Object LPAREN317_tree=null;
        Object RPAREN319_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1290:2: ( FOR EACH LPAREN forInControl RPAREN statement )
            // com/shin1ogawa/as3/AS3.g:1290:4: FOR EACH LPAREN forInControl RPAREN statement
            {
            root_0 = (Object)adaptor.nil();

            FOR315=(Token)match(input,FOR,FOLLOW_FOR_in_forEachInStatement4858); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            FOR315_tree = (Object)adaptor.create(FOR315);
            adaptor.addChild(root_0, FOR315_tree);
            }
            EACH316=(Token)match(input,EACH,FOLLOW_EACH_in_forEachInStatement4860); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            EACH316_tree = (Object)adaptor.create(EACH316);
            adaptor.addChild(root_0, EACH316_tree);
            }
            LPAREN317=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_forEachInStatement4862); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN317_tree = (Object)adaptor.create(LPAREN317);
            adaptor.addChild(root_0, LPAREN317_tree);
            }
            pushFollow(FOLLOW_forInControl_in_forEachInStatement4864);
            forInControl318=forInControl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, forInControl318.getTree());
            RPAREN319=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_forEachInStatement4866); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN319_tree = (Object)adaptor.create(RPAREN319);
            adaptor.addChild(root_0, RPAREN319_tree);
            }
            pushFollow(FOLLOW_statement_in_forEachInStatement4868);
            statement320=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement320.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forEachInStatement"

    public static class forControl_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forControl"
    // com/shin1ogawa/as3/AS3.g:1293:1: forControl options {k=3; } : ( forInit )? semic ( expression )? semic ( forUpdate )? ;
    public final AS3Parser.forControl_return forControl() throws RecognitionException {
        AS3Parser.forControl_return retval = new AS3Parser.forControl_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.forInit_return forInit321 = null;

        AS3Parser.semic_return semic322 = null;

        AS3Parser.expression_return expression323 = null;

        AS3Parser.semic_return semic324 = null;

        AS3Parser.forUpdate_return forUpdate325 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1295:2: ( ( forInit )? semic ( expression )? semic ( forUpdate )? )
            // com/shin1ogawa/as3/AS3.g:1295:4: ( forInit )? semic ( expression )? semic ( forUpdate )?
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1295:4: ( forInit )?
            int alt89=2;
            int LA89_0 = input.LA(1);

            if ( ((LA89_0>=AS && LA89_0<=STATIC)||LA89_0==LCURLY||LA89_0==LPAREN||LA89_0==LBRACK||LA89_0==LT||(LA89_0>=PLUS && LA89_0<=STAR)||(LA89_0>=INC && LA89_0<=DEC)||(LA89_0>=NOT && LA89_0<=INV)||(LA89_0>=XML_AT && LA89_0<=XML_LS_STD)||(LA89_0>=SINGLE_QUOTE_LITERAL && LA89_0<=DOUBLE_QUOTE_LITERAL)||LA89_0==REGULAR_EXPR_LITERAL||LA89_0==HEX_NUMBER_LITERAL||LA89_0==DEC_NUMBER_LITERAL||LA89_0==IDENTIFIER||(LA89_0>=XML_COMMENT && LA89_0<=XML_PI)) ) {
                alt89=1;
            }
            switch (alt89) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: forInit
                    {
                    pushFollow(FOLLOW_forInit_in_forControl4887);
                    forInit321=forInit();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, forInit321.getTree());

                    }
                    break;

            }

            pushFollow(FOLLOW_semic_in_forControl4890);
            semic322=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic322.getTree());
            // com/shin1ogawa/as3/AS3.g:1295:19: ( expression )?
            int alt90=2;
            int LA90_0 = input.LA(1);

            if ( ((LA90_0>=AS && LA90_0<=STATIC)||LA90_0==VOID||LA90_0==LCURLY||LA90_0==LPAREN||LA90_0==LBRACK||LA90_0==LT||(LA90_0>=PLUS && LA90_0<=STAR)||(LA90_0>=INC && LA90_0<=DEC)||(LA90_0>=NOT && LA90_0<=INV)||(LA90_0>=XML_AT && LA90_0<=XML_LS_STD)||(LA90_0>=SINGLE_QUOTE_LITERAL && LA90_0<=DOUBLE_QUOTE_LITERAL)||LA90_0==REGULAR_EXPR_LITERAL||LA90_0==HEX_NUMBER_LITERAL||LA90_0==DEC_NUMBER_LITERAL||LA90_0==IDENTIFIER||(LA90_0>=XML_COMMENT && LA90_0<=XML_PI)) ) {
                alt90=1;
            }
            switch (alt90) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: expression
                    {
                    pushFollow(FOLLOW_expression_in_forControl4892);
                    expression323=expression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression323.getTree());

                    }
                    break;

            }

            pushFollow(FOLLOW_semic_in_forControl4895);
            semic324=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic324.getTree());
            // com/shin1ogawa/as3/AS3.g:1295:37: ( forUpdate )?
            int alt91=2;
            int LA91_0 = input.LA(1);

            if ( ((LA91_0>=AS && LA91_0<=STATIC)||LA91_0==VOID||LA91_0==LCURLY||LA91_0==LPAREN||LA91_0==LBRACK||LA91_0==LT||(LA91_0>=PLUS && LA91_0<=STAR)||(LA91_0>=INC && LA91_0<=DEC)||(LA91_0>=NOT && LA91_0<=INV)||(LA91_0>=XML_AT && LA91_0<=XML_LS_STD)||(LA91_0>=SINGLE_QUOTE_LITERAL && LA91_0<=DOUBLE_QUOTE_LITERAL)||LA91_0==REGULAR_EXPR_LITERAL||LA91_0==HEX_NUMBER_LITERAL||LA91_0==DEC_NUMBER_LITERAL||LA91_0==IDENTIFIER||(LA91_0>=XML_COMMENT && LA91_0<=XML_PI)) ) {
                alt91=1;
            }
            switch (alt91) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: forUpdate
                    {
                    pushFollow(FOLLOW_forUpdate_in_forControl4897);
                    forUpdate325=forUpdate();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, forUpdate325.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forControl"

    public static class forInControl_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forInControl"
    // com/shin1ogawa/as3/AS3.g:1298:1: forInControl options {k=3; } : forInDecl IN expression ;
    public final AS3Parser.forInControl_return forInControl() throws RecognitionException {
        AS3Parser.forInControl_return retval = new AS3Parser.forInControl_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IN327=null;
        AS3Parser.forInDecl_return forInDecl326 = null;

        AS3Parser.expression_return expression328 = null;


        Object IN327_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1300:2: ( forInDecl IN expression )
            // com/shin1ogawa/as3/AS3.g:1300:4: forInDecl IN expression
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_forInDecl_in_forInControl4917);
            forInDecl326=forInDecl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, forInDecl326.getTree());
            IN327=(Token)match(input,IN,FOLLOW_IN_in_forInControl4919); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IN327_tree = (Object)adaptor.create(IN327);
            adaptor.addChild(root_0, IN327_tree);
            }
            pushFollow(FOLLOW_expression_in_forInControl4921);
            expression328=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression328.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forInControl"

    public static class forInDecl_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forInDecl"
    // com/shin1ogawa/as3/AS3.g:1303:1: forInDecl : ( leftHandSideExpression | VAR variableDeclarationNoIn );
    public final AS3Parser.forInDecl_return forInDecl() throws RecognitionException {
        AS3Parser.forInDecl_return retval = new AS3Parser.forInDecl_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token VAR330=null;
        AS3Parser.leftHandSideExpression_return leftHandSideExpression329 = null;

        AS3Parser.variableDeclarationNoIn_return variableDeclarationNoIn331 = null;


        Object VAR330_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1304:2: ( leftHandSideExpression | VAR variableDeclarationNoIn )
            int alt92=2;
            int LA92_0 = input.LA(1);

            if ( ((LA92_0>=AS && LA92_0<=USE)||(LA92_0>=VOID && LA92_0<=STATIC)||LA92_0==LCURLY||LA92_0==LPAREN||LA92_0==LBRACK||LA92_0==LT||LA92_0==STAR||(LA92_0>=XML_AT && LA92_0<=XML_LS_STD)||(LA92_0>=SINGLE_QUOTE_LITERAL && LA92_0<=DOUBLE_QUOTE_LITERAL)||LA92_0==REGULAR_EXPR_LITERAL||LA92_0==HEX_NUMBER_LITERAL||LA92_0==DEC_NUMBER_LITERAL||LA92_0==IDENTIFIER||(LA92_0>=XML_COMMENT && LA92_0<=XML_PI)) ) {
                alt92=1;
            }
            else if ( (LA92_0==VAR) ) {
                int LA92_2 = input.LA(2);

                if ( (LA92_2==SUB||LA92_2==XML_NS_OP) ) {
                    alt92=1;
                }
                else if ( (LA92_2==NATIVE||LA92_2==TO||(LA92_2>=EACH && LA92_2<=NAMESPACE)||(LA92_2>=DYNAMIC && LA92_2<=STATIC)||LA92_2==IDENTIFIER) ) {
                    alt92=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 92, 2, input);

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

                throw nvae;
            }
            switch (alt92) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1304:4: leftHandSideExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_leftHandSideExpression_in_forInDecl4932);
                    leftHandSideExpression329=leftHandSideExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, leftHandSideExpression329.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1304:29: VAR variableDeclarationNoIn
                    {
                    root_0 = (Object)adaptor.nil();

                    VAR330=(Token)match(input,VAR,FOLLOW_VAR_in_forInDecl4936); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    VAR330_tree = (Object)adaptor.create(VAR330);
                    adaptor.addChild(root_0, VAR330_tree);
                    }
                    pushFollow(FOLLOW_variableDeclarationNoIn_in_forInDecl4938);
                    variableDeclarationNoIn331=variableDeclarationNoIn();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclarationNoIn331.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forInDecl"

    public static class forInit_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forInit"
    // com/shin1ogawa/as3/AS3.g:1307:1: forInit : ( variableDeclarationNoInList | expressionNoIn );
    public final AS3Parser.forInit_return forInit() throws RecognitionException {
        AS3Parser.forInit_return retval = new AS3Parser.forInit_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.variableDeclarationNoInList_return variableDeclarationNoInList332 = null;

        AS3Parser.expressionNoIn_return expressionNoIn333 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1307:9: ( variableDeclarationNoInList | expressionNoIn )
            int alt93=2;
            switch ( input.LA(1) ) {
            case VAR:
                {
                int LA93_1 = input.LA(2);

                if ( (LA93_1==NATIVE||LA93_1==TO||(LA93_1>=EACH && LA93_1<=NAMESPACE)||(LA93_1>=DYNAMIC && LA93_1<=STATIC)||LA93_1==IDENTIFIER) ) {
                    alt93=1;
                }
                else if ( (LA93_1==SUB||LA93_1==XML_NS_OP) ) {
                    alt93=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 93, 1, input);

                    throw nvae;
                }
                }
                break;
            case IDENTIFIER:
                {
                int LA93_2 = input.LA(2);

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

                    throw nvae;
                }
                }
                break;
            case NATIVE:
            case TO:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
                {
                int LA93_3 = input.LA(2);

                if ( (synpred212_AS3()) ) {
                    alt93=1;
                }
                else if ( (true) ) {
                    alt93=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 93, 3, input);

                    throw nvae;
                }
                }
                break;
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VOID:
            case WHILE:
            case WITH:
            case INCLUDE:
            case LCURLY:
            case LPAREN:
            case LBRACK:
            case LT:
            case PLUS:
            case SUB:
            case STAR:
            case INC:
            case DEC:
            case NOT:
            case INV:
            case XML_AT:
            case XML_LS_STD:
            case SINGLE_QUOTE_LITERAL:
            case DOUBLE_QUOTE_LITERAL:
            case REGULAR_EXPR_LITERAL:
            case HEX_NUMBER_LITERAL:
            case DEC_NUMBER_LITERAL:
            case XML_COMMENT:
            case XML_CDATA:
            case XML_PI:
                {
                alt93=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 93, 0, input);

                throw nvae;
            }

            switch (alt93) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1307:11: variableDeclarationNoInList
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_variableDeclarationNoInList_in_forInit4948);
                    variableDeclarationNoInList332=variableDeclarationNoInList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclarationNoInList332.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1307:41: expressionNoIn
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_expressionNoIn_in_forInit4952);
                    expressionNoIn333=expressionNoIn();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, expressionNoIn333.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forInit"

    public static class forUpdate_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "forUpdate"
    // com/shin1ogawa/as3/AS3.g:1310:1: forUpdate : expression ;
    public final AS3Parser.forUpdate_return forUpdate() throws RecognitionException {
        AS3Parser.forUpdate_return retval = new AS3Parser.forUpdate_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.expression_return expression334 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1311:2: ( expression )
            // com/shin1ogawa/as3/AS3.g:1311:4: expression
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_expression_in_forUpdate4963);
            expression334=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression334.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "forUpdate"

    public static class doWhileStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "doWhileStatement"
    // com/shin1ogawa/as3/AS3.g:1317:1: doWhileStatement : DO statement WHILE parExpression semic ( SEMI )? ;
    public final AS3Parser.doWhileStatement_return doWhileStatement() throws RecognitionException {
        AS3Parser.doWhileStatement_return retval = new AS3Parser.doWhileStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token DO335=null;
        Token WHILE337=null;
        Token SEMI340=null;
        AS3Parser.statement_return statement336 = null;

        AS3Parser.parExpression_return parExpression338 = null;

        AS3Parser.semic_return semic339 = null;


        Object DO335_tree=null;
        Object WHILE337_tree=null;
        Object SEMI340_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1318:2: ( DO statement WHILE parExpression semic ( SEMI )? )
            // com/shin1ogawa/as3/AS3.g:1318:4: DO statement WHILE parExpression semic ( SEMI )?
            {
            root_0 = (Object)adaptor.nil();

            DO335=(Token)match(input,DO,FOLLOW_DO_in_doWhileStatement4977); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            DO335_tree = (Object)adaptor.create(DO335);
            adaptor.addChild(root_0, DO335_tree);
            }
            pushFollow(FOLLOW_statement_in_doWhileStatement4979);
            statement336=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement336.getTree());
            WHILE337=(Token)match(input,WHILE,FOLLOW_WHILE_in_doWhileStatement4981); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            WHILE337_tree = (Object)adaptor.create(WHILE337);
            adaptor.addChild(root_0, WHILE337_tree);
            }
            pushFollow(FOLLOW_parExpression_in_doWhileStatement4983);
            parExpression338=parExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, parExpression338.getTree());
            pushFollow(FOLLOW_semic_in_doWhileStatement4985);
            semic339=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, semic339.getTree());
            // com/shin1ogawa/as3/AS3.g:1318:43: ( SEMI )?
            int alt94=2;
            int LA94_0 = input.LA(1);

            if ( (LA94_0==SEMI) ) {
                int LA94_1 = input.LA(2);

                if ( (synpred213_AS3()) ) {
                    alt94=1;
                }
            }
            switch (alt94) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1318:44: SEMI
                    {
                    SEMI340=(Token)match(input,SEMI,FOLLOW_SEMI_in_doWhileStatement4988); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    SEMI340_tree = (Object)adaptor.create(SEMI340);
                    adaptor.addChild(root_0, SEMI340_tree);
                    }

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "doWhileStatement"

    public static class whileStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "whileStatement"
    // com/shin1ogawa/as3/AS3.g:1323:1: whileStatement : WHILE parExpression statement ;
    public final AS3Parser.whileStatement_return whileStatement() throws RecognitionException {
        AS3Parser.whileStatement_return retval = new AS3Parser.whileStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token WHILE341=null;
        AS3Parser.parExpression_return parExpression342 = null;

        AS3Parser.statement_return statement343 = null;


        Object WHILE341_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1324:2: ( WHILE parExpression statement )
            // com/shin1ogawa/as3/AS3.g:1324:4: WHILE parExpression statement
            {
            root_0 = (Object)adaptor.nil();

            WHILE341=(Token)match(input,WHILE,FOLLOW_WHILE_in_whileStatement5003); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            WHILE341_tree = (Object)adaptor.create(WHILE341);
            adaptor.addChild(root_0, WHILE341_tree);
            }
            pushFollow(FOLLOW_parExpression_in_whileStatement5005);
            parExpression342=parExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, parExpression342.getTree());
            pushFollow(FOLLOW_statement_in_whileStatement5007);
            statement343=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement343.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "whileStatement"

    public static class ifStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "ifStatement"
    // com/shin1ogawa/as3/AS3.g:1329:1: ifStatement : IF parExpression statement ( options {k=1; } : ELSE statement )? ;
    public final AS3Parser.ifStatement_return ifStatement() throws RecognitionException {
        AS3Parser.ifStatement_return retval = new AS3Parser.ifStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IF344=null;
        Token ELSE347=null;
        AS3Parser.parExpression_return parExpression345 = null;

        AS3Parser.statement_return statement346 = null;

        AS3Parser.statement_return statement348 = null;


        Object IF344_tree=null;
        Object ELSE347_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1330:2: ( IF parExpression statement ( options {k=1; } : ELSE statement )? )
            // com/shin1ogawa/as3/AS3.g:1330:4: IF parExpression statement ( options {k=1; } : ELSE statement )?
            {
            root_0 = (Object)adaptor.nil();

            IF344=(Token)match(input,IF,FOLLOW_IF_in_ifStatement5020); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IF344_tree = (Object)adaptor.create(IF344);
            adaptor.addChild(root_0, IF344_tree);
            }
            pushFollow(FOLLOW_parExpression_in_ifStatement5022);
            parExpression345=parExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, parExpression345.getTree());
            pushFollow(FOLLOW_statement_in_ifStatement5024);
            statement346=statement();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, statement346.getTree());
            // com/shin1ogawa/as3/AS3.g:1330:31: ( options {k=1; } : ELSE statement )?
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==ELSE) ) {
                int LA95_2 = input.LA(2);

                if ( (synpred214_AS3()) ) {
                    alt95=1;
                }
            }
            switch (alt95) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1330:47: ELSE statement
                    {
                    ELSE347=(Token)match(input,ELSE,FOLLOW_ELSE_in_ifStatement5034); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    ELSE347_tree = (Object)adaptor.create(ELSE347);
                    adaptor.addChild(root_0, ELSE347_tree);
                    }
                    pushFollow(FOLLOW_statement_in_ifStatement5036);
                    statement348=statement();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, statement348.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "ifStatement"

    public static class emptyStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "emptyStatement"
    // com/shin1ogawa/as3/AS3.g:1335:1: emptyStatement : SEMI ;
    public final AS3Parser.emptyStatement_return emptyStatement() throws RecognitionException {
        AS3Parser.emptyStatement_return retval = new AS3Parser.emptyStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token SEMI349=null;

        Object SEMI349_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1336:2: ( SEMI )
            // com/shin1ogawa/as3/AS3.g:1336:4: SEMI
            {
            root_0 = (Object)adaptor.nil();

            SEMI349=(Token)match(input,SEMI,FOLLOW_SEMI_in_emptyStatement5052); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            SEMI349_tree = (Object)adaptor.create(SEMI349);
            adaptor.addChild(root_0, SEMI349_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "emptyStatement"

    public static class variableStatement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableStatement"
    // com/shin1ogawa/as3/AS3.g:1342:1: variableStatement : ( IDENTIFIER )? VAR variableDeclarationList semic -> ^( VAR ( IDENTIFIER )? variableDeclarationList ) ;
    public final AS3Parser.variableStatement_return variableStatement() throws RecognitionException {
        AS3Parser.variableStatement_return retval = new AS3Parser.variableStatement_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER350=null;
        Token VAR351=null;
        AS3Parser.variableDeclarationList_return variableDeclarationList352 = null;

        AS3Parser.semic_return semic353 = null;


        Object IDENTIFIER350_tree=null;
        Object VAR351_tree=null;
        RewriteRuleTokenStream stream_VAR=new RewriteRuleTokenStream(adaptor,"token VAR");
        RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
        RewriteRuleSubtreeStream stream_variableDeclarationList=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclarationList");
        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
        try {
            // com/shin1ogawa/as3/AS3.g:1343:2: ( ( IDENTIFIER )? VAR variableDeclarationList semic -> ^( VAR ( IDENTIFIER )? variableDeclarationList ) )
            // com/shin1ogawa/as3/AS3.g:1343:4: ( IDENTIFIER )? VAR variableDeclarationList semic
            {
            // com/shin1ogawa/as3/AS3.g:1343:4: ( IDENTIFIER )?
            int alt96=2;
            int LA96_0 = input.LA(1);

            if ( (LA96_0==IDENTIFIER) ) {
                alt96=1;
            }
            switch (alt96) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1343:5: IDENTIFIER
                    {
                    IDENTIFIER350=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_variableStatement5067); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER350);


                    }
                    break;

            }

            VAR351=(Token)match(input,VAR,FOLLOW_VAR_in_variableStatement5071); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_VAR.add(VAR351);

            pushFollow(FOLLOW_variableDeclarationList_in_variableStatement5073);
            variableDeclarationList352=variableDeclarationList();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_variableDeclarationList.add(variableDeclarationList352.getTree());
            pushFollow(FOLLOW_semic_in_variableStatement5075);
            semic353=semic();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_semic.add(semic353.getTree());


            // AST REWRITE
            // elements: IDENTIFIER, VAR, variableDeclarationList
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1344:2: -> ^( VAR ( IDENTIFIER )? variableDeclarationList )
            {
                // com/shin1ogawa/as3/AS3.g:1344:5: ^( VAR ( IDENTIFIER )? variableDeclarationList )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_VAR.nextNode(), root_1);

                // com/shin1ogawa/as3/AS3.g:1344:11: ( IDENTIFIER )?
                if ( stream_IDENTIFIER.hasNext() ) {
                    adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());

                }
                stream_IDENTIFIER.reset();
                adaptor.addChild(root_1, stream_variableDeclarationList.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableStatement"

    public static class variableDeclarationList_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableDeclarationList"
    // com/shin1ogawa/as3/AS3.g:1347:1: variableDeclarationList : variableDeclaration ( COMMA variableDeclaration )* ;
    public final AS3Parser.variableDeclarationList_return variableDeclarationList() throws RecognitionException {
        AS3Parser.variableDeclarationList_return retval = new AS3Parser.variableDeclarationList_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA355=null;
        AS3Parser.variableDeclaration_return variableDeclaration354 = null;

        AS3Parser.variableDeclaration_return variableDeclaration356 = null;


        Object COMMA355_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1348:2: ( variableDeclaration ( COMMA variableDeclaration )* )
            // com/shin1ogawa/as3/AS3.g:1348:4: variableDeclaration ( COMMA variableDeclaration )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_variableDeclaration_in_variableDeclarationList5100);
            variableDeclaration354=variableDeclaration();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclaration354.getTree());
            // com/shin1ogawa/as3/AS3.g:1348:24: ( COMMA variableDeclaration )*
            loop97:
            do {
                int alt97=2;
                int LA97_0 = input.LA(1);

                if ( (LA97_0==COMMA) ) {
                    alt97=1;
                }


                switch (alt97) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1348:25: COMMA variableDeclaration
            	    {
            	    COMMA355=(Token)match(input,COMMA,FOLLOW_COMMA_in_variableDeclarationList5103); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA355_tree = (Object)adaptor.create(COMMA355);
            	    adaptor.addChild(root_0, COMMA355_tree);
            	    }
            	    pushFollow(FOLLOW_variableDeclaration_in_variableDeclarationList5105);
            	    variableDeclaration356=variableDeclaration();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclaration356.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableDeclarationList"

    public static class variableDeclarationNoInList_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableDeclarationNoInList"
    // com/shin1ogawa/as3/AS3.g:1351:1: variableDeclarationNoInList : ( VAR )? variableDeclarationNoIn ( COMMA variableDeclarationNoIn )* ;
    public final AS3Parser.variableDeclarationNoInList_return variableDeclarationNoInList() throws RecognitionException {
        AS3Parser.variableDeclarationNoInList_return retval = new AS3Parser.variableDeclarationNoInList_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token VAR357=null;
        Token COMMA359=null;
        AS3Parser.variableDeclarationNoIn_return variableDeclarationNoIn358 = null;

        AS3Parser.variableDeclarationNoIn_return variableDeclarationNoIn360 = null;


        Object VAR357_tree=null;
        Object COMMA359_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1352:2: ( ( VAR )? variableDeclarationNoIn ( COMMA variableDeclarationNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1352:4: ( VAR )? variableDeclarationNoIn ( COMMA variableDeclarationNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1352:4: ( VAR )?
            int alt98=2;
            int LA98_0 = input.LA(1);

            if ( (LA98_0==VAR) ) {
                alt98=1;
            }
            switch (alt98) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1352:5: VAR
                    {
                    VAR357=(Token)match(input,VAR,FOLLOW_VAR_in_variableDeclarationNoInList5119); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    VAR357_tree = (Object)adaptor.create(VAR357);
                    adaptor.addChild(root_0, VAR357_tree);
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_variableDeclarationNoIn_in_variableDeclarationNoInList5123);
            variableDeclarationNoIn358=variableDeclarationNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclarationNoIn358.getTree());
            // com/shin1ogawa/as3/AS3.g:1352:35: ( COMMA variableDeclarationNoIn )*
            loop99:
            do {
                int alt99=2;
                int LA99_0 = input.LA(1);

                if ( (LA99_0==COMMA) ) {
                    alt99=1;
                }


                switch (alt99) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1352:36: COMMA variableDeclarationNoIn
            	    {
            	    COMMA359=(Token)match(input,COMMA,FOLLOW_COMMA_in_variableDeclarationNoInList5126); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA359_tree = (Object)adaptor.create(COMMA359);
            	    adaptor.addChild(root_0, COMMA359_tree);
            	    }
            	    pushFollow(FOLLOW_variableDeclarationNoIn_in_variableDeclarationNoInList5128);
            	    variableDeclarationNoIn360=variableDeclarationNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, variableDeclarationNoIn360.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableDeclarationNoInList"

    public static class variableDeclaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableDeclaration"
    // com/shin1ogawa/as3/AS3.g:1355:1: variableDeclaration : variableIdentifierDecl ( variableDelarationAssignment )? -> ^( variableIdentifierDecl ( variableDelarationAssignment )? ) ;
    public final AS3Parser.variableDeclaration_return variableDeclaration() throws RecognitionException {
        AS3Parser.variableDeclaration_return retval = new AS3Parser.variableDeclaration_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.variableIdentifierDecl_return variableIdentifierDecl361 = null;

        AS3Parser.variableDelarationAssignment_return variableDelarationAssignment362 = null;


        RewriteRuleSubtreeStream stream_variableDelarationAssignment=new RewriteRuleSubtreeStream(adaptor,"rule variableDelarationAssignment");
        RewriteRuleSubtreeStream stream_variableIdentifierDecl=new RewriteRuleSubtreeStream(adaptor,"rule variableIdentifierDecl");
        try {
            // com/shin1ogawa/as3/AS3.g:1356:2: ( variableIdentifierDecl ( variableDelarationAssignment )? -> ^( variableIdentifierDecl ( variableDelarationAssignment )? ) )
            // com/shin1ogawa/as3/AS3.g:1356:4: variableIdentifierDecl ( variableDelarationAssignment )?
            {
            pushFollow(FOLLOW_variableIdentifierDecl_in_variableDeclaration5141);
            variableIdentifierDecl361=variableIdentifierDecl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_variableIdentifierDecl.add(variableIdentifierDecl361.getTree());
            // com/shin1ogawa/as3/AS3.g:1356:27: ( variableDelarationAssignment )?
            int alt100=2;
            int LA100_0 = input.LA(1);

            if ( (LA100_0==ASSIGN) ) {
                alt100=1;
            }
            switch (alt100) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: variableDelarationAssignment
                    {
                    pushFollow(FOLLOW_variableDelarationAssignment_in_variableDeclaration5143);
                    variableDelarationAssignment362=variableDelarationAssignment();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_variableDelarationAssignment.add(variableDelarationAssignment362.getTree());

                    }
                    break;

            }



            // AST REWRITE
            // elements: variableDelarationAssignment, variableIdentifierDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1357:2: -> ^( variableIdentifierDecl ( variableDelarationAssignment )? )
            {
                // com/shin1ogawa/as3/AS3.g:1357:5: ^( variableIdentifierDecl ( variableDelarationAssignment )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_variableIdentifierDecl.nextNode(), root_1);

                // com/shin1ogawa/as3/AS3.g:1357:30: ( variableDelarationAssignment )?
                if ( stream_variableDelarationAssignment.hasNext() ) {
                    adaptor.addChild(root_1, stream_variableDelarationAssignment.nextTree());

                }
                stream_variableDelarationAssignment.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableDeclaration"

    public static class variableDelarationAssignment_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableDelarationAssignment"
    // com/shin1ogawa/as3/AS3.g:1359:1: variableDelarationAssignment : ASSIGN assignmentExpression -> ^( ASSIGN assignmentExpression ) ;
    public final AS3Parser.variableDelarationAssignment_return variableDelarationAssignment() throws RecognitionException {
        AS3Parser.variableDelarationAssignment_return retval = new AS3Parser.variableDelarationAssignment_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token ASSIGN363=null;
        AS3Parser.assignmentExpression_return assignmentExpression364 = null;


        Object ASSIGN363_tree=null;
        RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
        RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
        try {
            // com/shin1ogawa/as3/AS3.g:1360:2: ( ASSIGN assignmentExpression -> ^( ASSIGN assignmentExpression ) )
            // com/shin1ogawa/as3/AS3.g:1360:4: ASSIGN assignmentExpression
            {
            ASSIGN363=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDelarationAssignment5164); if (state.failed) return retval; 
            if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN363);

            pushFollow(FOLLOW_assignmentExpression_in_variableDelarationAssignment5166);
            assignmentExpression364=assignmentExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_assignmentExpression.add(assignmentExpression364.getTree());


            // AST REWRITE
            // elements: assignmentExpression, ASSIGN
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1361:2: -> ^( ASSIGN assignmentExpression )
            {
                // com/shin1ogawa/as3/AS3.g:1361:5: ^( ASSIGN assignmentExpression )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_ASSIGN.nextNode(), root_1);

                adaptor.addChild(root_1, stream_assignmentExpression.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableDelarationAssignment"

    public static class variableDeclarationNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableDeclarationNoIn"
    // com/shin1ogawa/as3/AS3.g:1364:1: variableDeclarationNoIn : variableIdentifierDecl ( ASSIGN assignmentExpressionNoIn )? ;
    public final AS3Parser.variableDeclarationNoIn_return variableDeclarationNoIn() throws RecognitionException {
        AS3Parser.variableDeclarationNoIn_return retval = new AS3Parser.variableDeclarationNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token ASSIGN366=null;
        AS3Parser.variableIdentifierDecl_return variableIdentifierDecl365 = null;

        AS3Parser.assignmentExpressionNoIn_return assignmentExpressionNoIn367 = null;


        Object ASSIGN366_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1365:2: ( variableIdentifierDecl ( ASSIGN assignmentExpressionNoIn )? )
            // com/shin1ogawa/as3/AS3.g:1365:4: variableIdentifierDecl ( ASSIGN assignmentExpressionNoIn )?
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_variableIdentifierDecl_in_variableDeclarationNoIn5186);
            variableIdentifierDecl365=variableIdentifierDecl();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, variableIdentifierDecl365.getTree());
            // com/shin1ogawa/as3/AS3.g:1365:27: ( ASSIGN assignmentExpressionNoIn )?
            int alt101=2;
            int LA101_0 = input.LA(1);

            if ( (LA101_0==ASSIGN) ) {
                alt101=1;
            }
            switch (alt101) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1365:28: ASSIGN assignmentExpressionNoIn
                    {
                    ASSIGN366=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5189); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    ASSIGN366_tree = (Object)adaptor.create(ASSIGN366);
                    adaptor.addChild(root_0, ASSIGN366_tree);
                    }
                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5191);
                    assignmentExpressionNoIn367=assignmentExpressionNoIn();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpressionNoIn367.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableDeclarationNoIn"

    public static class variableIdentifierDecl_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "variableIdentifierDecl"
    // com/shin1ogawa/as3/AS3.g:1368:1: variableIdentifierDecl : identifierLiteral ( COLON type )? -> ^( identifierLiteral ( ^( COLON type ) )? ) ;
    public final AS3Parser.variableIdentifierDecl_return variableIdentifierDecl() throws RecognitionException {
        AS3Parser.variableIdentifierDecl_return retval = new AS3Parser.variableIdentifierDecl_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COLON369=null;
        AS3Parser.identifierLiteral_return identifierLiteral368 = null;

        AS3Parser.type_return type370 = null;


        Object COLON369_tree=null;
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleSubtreeStream stream_identifierLiteral=new RewriteRuleSubtreeStream(adaptor,"rule identifierLiteral");
        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
        try {
            // com/shin1ogawa/as3/AS3.g:1369:2: ( identifierLiteral ( COLON type )? -> ^( identifierLiteral ( ^( COLON type ) )? ) )
            // com/shin1ogawa/as3/AS3.g:1369:4: identifierLiteral ( COLON type )?
            {
            pushFollow(FOLLOW_identifierLiteral_in_variableIdentifierDecl5204);
            identifierLiteral368=identifierLiteral();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) stream_identifierLiteral.add(identifierLiteral368.getTree());
            // com/shin1ogawa/as3/AS3.g:1369:22: ( COLON type )?
            int alt102=2;
            int LA102_0 = input.LA(1);

            if ( (LA102_0==COLON) ) {
                alt102=1;
            }
            switch (alt102) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1369:23: COLON type
                    {
                    COLON369=(Token)match(input,COLON,FOLLOW_COLON_in_variableIdentifierDecl5207); if (state.failed) return retval; 
                    if ( state.backtracking==0 ) stream_COLON.add(COLON369);

                    pushFollow(FOLLOW_type_in_variableIdentifierDecl5209);
                    type370=type();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) stream_type.add(type370.getTree());

                    }
                    break;

            }



            // AST REWRITE
            // elements: identifierLiteral, COLON, type
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            if ( state.backtracking==0 ) {
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1370:2: -> ^( identifierLiteral ( ^( COLON type ) )? )
            {
                // com/shin1ogawa/as3/AS3.g:1370:5: ^( identifierLiteral ( ^( COLON type ) )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(stream_identifierLiteral.nextNode(), root_1);

                // com/shin1ogawa/as3/AS3.g:1370:25: ( ^( COLON type ) )?
                if ( stream_COLON.hasNext()||stream_type.hasNext() ) {
                    // com/shin1ogawa/as3/AS3.g:1370:25: ^( COLON type )
                    {
                    Object root_2 = (Object)adaptor.nil();
                    root_2 = (Object)adaptor.becomeRoot(stream_COLON.nextNode(), root_2);

                    adaptor.addChild(root_2, stream_type.nextTree());

                    adaptor.addChild(root_1, root_2);
                    }

                }
                stream_COLON.reset();
                stream_type.reset();

                adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}
            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "variableIdentifierDecl"

    public static class type_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "type"
    // com/shin1ogawa/as3/AS3.g:1375:1: type : ( qualifiedName | STAR | VOID ) ;
    public final AS3Parser.type_return type() throws RecognitionException {
        AS3Parser.type_return retval = new AS3Parser.type_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token STAR372=null;
        Token VOID373=null;
        AS3Parser.qualifiedName_return qualifiedName371 = null;


        Object STAR372_tree=null;
        Object VOID373_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1375:6: ( ( qualifiedName | STAR | VOID ) )
            // com/shin1ogawa/as3/AS3.g:1375:8: ( qualifiedName | STAR | VOID )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1375:8: ( qualifiedName | STAR | VOID )
            int alt103=3;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                alt103=1;
                }
                break;
            case STAR:
                {
                alt103=2;
                }
                break;
            case VOID:
                {
                alt103=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 103, 0, input);

                throw nvae;
            }

            switch (alt103) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1375:9: qualifiedName
                    {
                    pushFollow(FOLLOW_qualifiedName_in_type5238);
                    qualifiedName371=qualifiedName();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, qualifiedName371.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1375:25: STAR
                    {
                    STAR372=(Token)match(input,STAR,FOLLOW_STAR_in_type5242); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    STAR372_tree = (Object)adaptor.create(STAR372);
                    adaptor.addChild(root_0, STAR372_tree);
                    }

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1375:32: VOID
                    {
                    VOID373=(Token)match(input,VOID,FOLLOW_VOID_in_type5246); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    VOID373_tree = (Object)adaptor.create(VOID373);
                    adaptor.addChild(root_0, VOID373_tree);
                    }

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "type"

    public static class typeList_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "typeList"
    // com/shin1ogawa/as3/AS3.g:1378:1: typeList : type ( COMMA type )* ;
    public final AS3Parser.typeList_return typeList() throws RecognitionException {
        AS3Parser.typeList_return retval = new AS3Parser.typeList_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA375=null;
        AS3Parser.type_return type374 = null;

        AS3Parser.type_return type376 = null;


        Object COMMA375_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1378:9: ( type ( COMMA type )* )
            // com/shin1ogawa/as3/AS3.g:1378:11: type ( COMMA type )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_type_in_typeList5256);
            type374=type();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, type374.getTree());
            // com/shin1ogawa/as3/AS3.g:1378:16: ( COMMA type )*
            loop104:
            do {
                int alt104=2;
                int LA104_0 = input.LA(1);

                if ( (LA104_0==COMMA) ) {
                    alt104=1;
                }


                switch (alt104) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1378:17: COMMA type
            	    {
            	    COMMA375=(Token)match(input,COMMA,FOLLOW_COMMA_in_typeList5259); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA375_tree = (Object)adaptor.create(COMMA375);
            	    adaptor.addChild(root_0, COMMA375_tree);
            	    }
            	    pushFollow(FOLLOW_type_in_typeList5261);
            	    type376=type();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, type376.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "typeList"

    public static class standardQualifiedName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "standardQualifiedName"
    // com/shin1ogawa/as3/AS3.g:1381:1: standardQualifiedName : ( ( IDENTIFIER ) ( DOT ( IDENTIFIER ) )* ) ;
    public final AS3Parser.standardQualifiedName_return standardQualifiedName() throws RecognitionException {
        AS3Parser.standardQualifiedName_return retval = new AS3Parser.standardQualifiedName_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER377=null;
        Token DOT378=null;
        Token IDENTIFIER379=null;

        Object IDENTIFIER377_tree=null;
        Object DOT378_tree=null;
        Object IDENTIFIER379_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1382:2: ( ( ( IDENTIFIER ) ( DOT ( IDENTIFIER ) )* ) )
            // com/shin1ogawa/as3/AS3.g:1382:4: ( ( IDENTIFIER ) ( DOT ( IDENTIFIER ) )* )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1382:4: ( ( IDENTIFIER ) ( DOT ( IDENTIFIER ) )* )
            // com/shin1ogawa/as3/AS3.g:1382:5: ( IDENTIFIER ) ( DOT ( IDENTIFIER ) )*
            {
            // com/shin1ogawa/as3/AS3.g:1382:5: ( IDENTIFIER )
            // com/shin1ogawa/as3/AS3.g:1382:6: IDENTIFIER
            {
            IDENTIFIER377=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_standardQualifiedName5276); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IDENTIFIER377_tree = (Object)adaptor.create(IDENTIFIER377);
            adaptor.addChild(root_0, IDENTIFIER377_tree);
            }

            }

            // com/shin1ogawa/as3/AS3.g:1382:18: ( DOT ( IDENTIFIER ) )*
            loop105:
            do {
                int alt105=2;
                int LA105_0 = input.LA(1);

                if ( (LA105_0==DOT) ) {
                    int LA105_1 = input.LA(2);

                    if ( (LA105_1==IDENTIFIER) ) {
                        alt105=1;
                    }


                }


                switch (alt105) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1382:19: DOT ( IDENTIFIER )
            	    {
            	    DOT378=(Token)match(input,DOT,FOLLOW_DOT_in_standardQualifiedName5280); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    DOT378_tree = (Object)adaptor.create(DOT378);
            	    adaptor.addChild(root_0, DOT378_tree);
            	    }
            	    // com/shin1ogawa/as3/AS3.g:1382:23: ( IDENTIFIER )
            	    // com/shin1ogawa/as3/AS3.g:1382:24: IDENTIFIER
            	    {
            	    IDENTIFIER379=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_standardQualifiedName5283); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    IDENTIFIER379_tree = (Object)adaptor.create(IDENTIFIER379);
            	    adaptor.addChild(root_0, IDENTIFIER379_tree);
            	    }

            	    }


            	    }
            	    break;

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


            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "standardQualifiedName"

    public static class qualifiedName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "qualifiedName"
    // com/shin1ogawa/as3/AS3.g:1385:1: qualifiedName : ( standardQualifiedName ( typePostfixSyntax )? ) ;
    public final AS3Parser.qualifiedName_return qualifiedName() throws RecognitionException {
        AS3Parser.qualifiedName_return retval = new AS3Parser.qualifiedName_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.standardQualifiedName_return standardQualifiedName380 = null;

        AS3Parser.typePostfixSyntax_return typePostfixSyntax381 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1386:2: ( ( standardQualifiedName ( typePostfixSyntax )? ) )
            // com/shin1ogawa/as3/AS3.g:1386:4: ( standardQualifiedName ( typePostfixSyntax )? )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1386:4: ( standardQualifiedName ( typePostfixSyntax )? )
            // com/shin1ogawa/as3/AS3.g:1386:5: standardQualifiedName ( typePostfixSyntax )?
            {
            pushFollow(FOLLOW_standardQualifiedName_in_qualifiedName5300);
            standardQualifiedName380=standardQualifiedName();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, standardQualifiedName380.getTree());
            // com/shin1ogawa/as3/AS3.g:1386:27: ( typePostfixSyntax )?
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==DOT) ) {
                int LA106_1 = input.LA(2);

                if ( (LA106_1==LT) ) {
                    alt106=1;
                }
            }
            switch (alt106) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1386:28: typePostfixSyntax
                    {
                    pushFollow(FOLLOW_typePostfixSyntax_in_qualifiedName5303);
                    typePostfixSyntax381=typePostfixSyntax();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, typePostfixSyntax381.getTree());

                    }
                    break;

            }


            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "qualifiedName"

    public static class typePostfixSyntax_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "typePostfixSyntax"
    // com/shin1ogawa/as3/AS3.g:1389:1: typePostfixSyntax : ( DOT LT standardQualifiedName GT ) ;
    public final AS3Parser.typePostfixSyntax_return typePostfixSyntax() throws RecognitionException {
        AS3Parser.typePostfixSyntax_return retval = new AS3Parser.typePostfixSyntax_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token DOT382=null;
        Token LT383=null;
        Token GT385=null;
        AS3Parser.standardQualifiedName_return standardQualifiedName384 = null;


        Object DOT382_tree=null;
        Object LT383_tree=null;
        Object GT385_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1390:2: ( ( DOT LT standardQualifiedName GT ) )
            // com/shin1ogawa/as3/AS3.g:1390:4: ( DOT LT standardQualifiedName GT )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1390:4: ( DOT LT standardQualifiedName GT )
            // com/shin1ogawa/as3/AS3.g:1390:5: DOT LT standardQualifiedName GT
            {
            DOT382=(Token)match(input,DOT,FOLLOW_DOT_in_typePostfixSyntax5318); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            DOT382_tree = (Object)adaptor.create(DOT382);
            adaptor.addChild(root_0, DOT382_tree);
            }
            LT383=(Token)match(input,LT,FOLLOW_LT_in_typePostfixSyntax5320); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LT383_tree = (Object)adaptor.create(LT383);
            adaptor.addChild(root_0, LT383_tree);
            }
            pushFollow(FOLLOW_standardQualifiedName_in_typePostfixSyntax5322);
            standardQualifiedName384=standardQualifiedName();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, standardQualifiedName384.getTree());
            GT385=(Token)match(input,GT,FOLLOW_GT_in_typePostfixSyntax5324); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            GT385_tree = (Object)adaptor.create(GT385);
            adaptor.addChild(root_0, GT385_tree);
            }

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "typePostfixSyntax"

    public static class qualifiedIdentifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "qualifiedIdentifier"
    // com/shin1ogawa/as3/AS3.g:1393:1: qualifiedIdentifier : IDENTIFIER ;
    public final AS3Parser.qualifiedIdentifier_return qualifiedIdentifier() throws RecognitionException {
        AS3Parser.qualifiedIdentifier_return retval = new AS3Parser.qualifiedIdentifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER386=null;

        Object IDENTIFIER386_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1394:2: ( IDENTIFIER )
            // com/shin1ogawa/as3/AS3.g:1394:4: IDENTIFIER
            {
            root_0 = (Object)adaptor.nil();

            IDENTIFIER386=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedIdentifier5336); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            IDENTIFIER386_tree = (Object)adaptor.create(IDENTIFIER386);
            adaptor.addChild(root_0, IDENTIFIER386_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "qualifiedIdentifier"

    public static class parExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "parExpression"
    // com/shin1ogawa/as3/AS3.g:1399:1: parExpression : LPAREN expression RPAREN ;
    public final AS3Parser.parExpression_return parExpression() throws RecognitionException {
        AS3Parser.parExpression_return retval = new AS3Parser.parExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LPAREN387=null;
        Token RPAREN389=null;
        AS3Parser.expression_return expression388 = null;


        Object LPAREN387_tree=null;
        Object RPAREN389_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1400:2: ( LPAREN expression RPAREN )
            // com/shin1ogawa/as3/AS3.g:1400:4: LPAREN expression RPAREN
            {
            root_0 = (Object)adaptor.nil();

            LPAREN387=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_parExpression5349); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN387_tree = (Object)adaptor.create(LPAREN387);
            adaptor.addChild(root_0, LPAREN387_tree);
            }
            pushFollow(FOLLOW_expression_in_parExpression5351);
            expression388=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression388.getTree());
            RPAREN389=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_parExpression5353); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN389_tree = (Object)adaptor.create(RPAREN389);
            adaptor.addChild(root_0, RPAREN389_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "parExpression"

    public static class expression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "expression"
    // com/shin1ogawa/as3/AS3.g:1403:1: expression : assignmentExpression ( COMMA assignmentExpression )* ;
    public final AS3Parser.expression_return expression() throws RecognitionException {
        AS3Parser.expression_return retval = new AS3Parser.expression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA391=null;
        AS3Parser.assignmentExpression_return assignmentExpression390 = null;

        AS3Parser.assignmentExpression_return assignmentExpression392 = null;


        Object COMMA391_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1404:2: ( assignmentExpression ( COMMA assignmentExpression )* )
            // com/shin1ogawa/as3/AS3.g:1404:4: assignmentExpression ( COMMA assignmentExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_assignmentExpression_in_expression5364);
            assignmentExpression390=assignmentExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression390.getTree());
            // com/shin1ogawa/as3/AS3.g:1404:25: ( COMMA assignmentExpression )*
            loop107:
            do {
                int alt107=2;
                int LA107_0 = input.LA(1);

                if ( (LA107_0==COMMA) ) {
                    int LA107_2 = input.LA(2);

                    if ( (synpred227_AS3()) ) {
                        alt107=1;
                    }


                }


                switch (alt107) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1404:26: COMMA assignmentExpression
            	    {
            	    COMMA391=(Token)match(input,COMMA,FOLLOW_COMMA_in_expression5367); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA391_tree = (Object)adaptor.create(COMMA391);
            	    adaptor.addChild(root_0, COMMA391_tree);
            	    }
            	    pushFollow(FOLLOW_assignmentExpression_in_expression5369);
            	    assignmentExpression392=assignmentExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression392.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "expression"

    public static class expressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "expressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1407:1: expressionNoIn : assignmentExpressionNoIn ( COMMA assignmentExpressionNoIn )* ;
    public final AS3Parser.expressionNoIn_return expressionNoIn() throws RecognitionException {
        AS3Parser.expressionNoIn_return retval = new AS3Parser.expressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA394=null;
        AS3Parser.assignmentExpressionNoIn_return assignmentExpressionNoIn393 = null;

        AS3Parser.assignmentExpressionNoIn_return assignmentExpressionNoIn395 = null;


        Object COMMA394_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1408:2: ( assignmentExpressionNoIn ( COMMA assignmentExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1408:4: assignmentExpressionNoIn ( COMMA assignmentExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5382);
            assignmentExpressionNoIn393=assignmentExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpressionNoIn393.getTree());
            // com/shin1ogawa/as3/AS3.g:1408:29: ( COMMA assignmentExpressionNoIn )*
            loop108:
            do {
                int alt108=2;
                int LA108_0 = input.LA(1);

                if ( (LA108_0==COMMA) ) {
                    alt108=1;
                }


                switch (alt108) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1408:30: COMMA assignmentExpressionNoIn
            	    {
            	    COMMA394=(Token)match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn5385); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA394_tree = (Object)adaptor.create(COMMA394);
            	    adaptor.addChild(root_0, COMMA394_tree);
            	    }
            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5387);
            	    assignmentExpressionNoIn395=assignmentExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpressionNoIn395.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "expressionNoIn"

    public static class assignmentExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "assignmentExpression"
    // com/shin1ogawa/as3/AS3.g:1412:1: assignmentExpression : ( leftHandSideExpression assignmentOperator assignmentExpression | conditionalExpression );
    public final AS3Parser.assignmentExpression_return assignmentExpression() throws RecognitionException {
        AS3Parser.assignmentExpression_return retval = new AS3Parser.assignmentExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.leftHandSideExpression_return leftHandSideExpression396 = null;

        AS3Parser.assignmentOperator_return assignmentOperator397 = null;

        AS3Parser.assignmentExpression_return assignmentExpression398 = null;

        AS3Parser.conditionalExpression_return conditionalExpression399 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1413:2: ( leftHandSideExpression assignmentOperator assignmentExpression | conditionalExpression )
            int alt109=2;
            alt109 = dfa109.predict(input);
            switch (alt109) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1413:4: leftHandSideExpression assignmentOperator assignmentExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_leftHandSideExpression_in_assignmentExpression5401);
                    leftHandSideExpression396=leftHandSideExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, leftHandSideExpression396.getTree());
                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression5403);
                    assignmentOperator397=assignmentOperator();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentOperator397.getTree());
                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression5405);
                    assignmentExpression398=assignmentExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression398.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1413:69: conditionalExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression5409);
                    conditionalExpression399=conditionalExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, conditionalExpression399.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "assignmentExpression"

    public static class assignmentExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "assignmentExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1416:1: assignmentExpressionNoIn : ( conditionalExpressionNoIn | leftHandSideExpression assignmentOperator assignmentExpressionNoIn );
    public final AS3Parser.assignmentExpressionNoIn_return assignmentExpressionNoIn() throws RecognitionException {
        AS3Parser.assignmentExpressionNoIn_return retval = new AS3Parser.assignmentExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.conditionalExpressionNoIn_return conditionalExpressionNoIn400 = null;

        AS3Parser.leftHandSideExpression_return leftHandSideExpression401 = null;

        AS3Parser.assignmentOperator_return assignmentOperator402 = null;

        AS3Parser.assignmentExpressionNoIn_return assignmentExpressionNoIn403 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1417:2: ( conditionalExpressionNoIn | leftHandSideExpression assignmentOperator assignmentExpressionNoIn )
            int alt110=2;
            alt110 = dfa110.predict(input);
            switch (alt110) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1417:4: conditionalExpressionNoIn
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn5420);
                    conditionalExpressionNoIn400=conditionalExpressionNoIn();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, conditionalExpressionNoIn400.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1417:32: leftHandSideExpression assignmentOperator assignmentExpressionNoIn
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_leftHandSideExpression_in_assignmentExpressionNoIn5424);
                    leftHandSideExpression401=leftHandSideExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, leftHandSideExpression401.getTree());
                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn5426);
                    assignmentOperator402=assignmentOperator();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentOperator402.getTree());
                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn5428);
                    assignmentExpressionNoIn403=assignmentExpressionNoIn();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpressionNoIn403.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "assignmentExpressionNoIn"

    public static class assignmentOperator_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "assignmentOperator"
    // com/shin1ogawa/as3/AS3.g:1420:1: assignmentOperator : assignmentOperator_int ;
    public final AS3Parser.assignmentOperator_return assignmentOperator() throws RecognitionException {
        AS3Parser.assignmentOperator_return retval = new AS3Parser.assignmentOperator_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.assignmentOperator_int_return assignmentOperator_int404 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1421:2: ( assignmentOperator_int )
            // com/shin1ogawa/as3/AS3.g:1421:4: assignmentOperator_int
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_assignmentOperator_int_in_assignmentOperator5439);
            assignmentOperator_int404=assignmentOperator_int();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentOperator_int404.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "assignmentOperator"

    public static class assignmentOperator_int_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "assignmentOperator_int"
    // com/shin1ogawa/as3/AS3.g:1424:1: assignmentOperator_int : ( ASSIGN | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | SHL_ASSIGN | SHR_ASSIGN | SHU_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN );
    public final AS3Parser.assignmentOperator_int_return assignmentOperator_int() throws RecognitionException {
        AS3Parser.assignmentOperator_int_return retval = new AS3Parser.assignmentOperator_int_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set405=null;

        Object set405_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1425:2: ( ASSIGN | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | SHL_ASSIGN | SHR_ASSIGN | SHU_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN )
            // com/shin1ogawa/as3/AS3.g:
            {
            root_0 = (Object)adaptor.nil();

            set405=(Token)input.LT(1);
            if ( input.LA(1)==ASSIGN||(input.LA(1)>=MUL_ASSIGN && input.LA(1)<=OR_ASSIGN) ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set405));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "assignmentOperator_int"

    public static class conditionalExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "conditionalExpression"
    // com/shin1ogawa/as3/AS3.g:1430:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
    public final AS3Parser.conditionalExpression_return conditionalExpression() throws RecognitionException {
        AS3Parser.conditionalExpression_return retval = new AS3Parser.conditionalExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token QUE407=null;
        Token COLON409=null;
        AS3Parser.logicalORExpression_return logicalORExpression406 = null;

        AS3Parser.assignmentExpression_return assignmentExpression408 = null;

        AS3Parser.assignmentExpression_return assignmentExpression410 = null;


        Object QUE407_tree=null;
        Object COLON409_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1431:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
            // com/shin1ogawa/as3/AS3.g:1431:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression5508);
            logicalORExpression406=logicalORExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalORExpression406.getTree());
            // com/shin1ogawa/as3/AS3.g:1431:24: ( QUE assignmentExpression COLON assignmentExpression )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==QUE) ) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1431:25: QUE assignmentExpression COLON assignmentExpression
                    {
                    QUE407=(Token)match(input,QUE,FOLLOW_QUE_in_conditionalExpression5511); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    QUE407_tree = (Object)adaptor.create(QUE407);
                    adaptor.addChild(root_0, QUE407_tree);
                    }
                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression5513);
                    assignmentExpression408=assignmentExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression408.getTree());
                    COLON409=(Token)match(input,COLON,FOLLOW_COLON_in_conditionalExpression5515); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    COLON409_tree = (Object)adaptor.create(COLON409);
                    adaptor.addChild(root_0, COLON409_tree);
                    }
                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression5517);
                    assignmentExpression410=assignmentExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression410.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "conditionalExpression"

    public static class conditionalExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "conditionalExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1434:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpression COLON assignmentExpression )? ;
    public final AS3Parser.conditionalExpressionNoIn_return conditionalExpressionNoIn() throws RecognitionException {
        AS3Parser.conditionalExpressionNoIn_return retval = new AS3Parser.conditionalExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token QUE412=null;
        Token COLON414=null;
        AS3Parser.logicalORExpressionNoIn_return logicalORExpressionNoIn411 = null;

        AS3Parser.assignmentExpression_return assignmentExpression413 = null;

        AS3Parser.assignmentExpression_return assignmentExpression415 = null;


        Object QUE412_tree=null;
        Object COLON414_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1435:2: ( logicalORExpressionNoIn ( QUE assignmentExpression COLON assignmentExpression )? )
            // com/shin1ogawa/as3/AS3.g:1435:4: logicalORExpressionNoIn ( QUE assignmentExpression COLON assignmentExpression )?
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn5530);
            logicalORExpressionNoIn411=logicalORExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalORExpressionNoIn411.getTree());
            // com/shin1ogawa/as3/AS3.g:1435:28: ( QUE assignmentExpression COLON assignmentExpression )?
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==QUE) ) {
                alt112=1;
            }
            switch (alt112) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1435:29: QUE assignmentExpression COLON assignmentExpression
                    {
                    QUE412=(Token)match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn5533); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    QUE412_tree = (Object)adaptor.create(QUE412);
                    adaptor.addChild(root_0, QUE412_tree);
                    }
                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpressionNoIn5535);
                    assignmentExpression413=assignmentExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression413.getTree());
                    COLON414=(Token)match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn5537); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    COLON414_tree = (Object)adaptor.create(COLON414);
                    adaptor.addChild(root_0, COLON414_tree);
                    }
                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpressionNoIn5539);
                    assignmentExpression415=assignmentExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression415.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "conditionalExpressionNoIn"

    public static class logicalORExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "logicalORExpression"
    // com/shin1ogawa/as3/AS3.g:1439:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
    public final AS3Parser.logicalORExpression_return logicalORExpression() throws RecognitionException {
        AS3Parser.logicalORExpression_return retval = new AS3Parser.logicalORExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LOR417=null;
        AS3Parser.logicalANDExpression_return logicalANDExpression416 = null;

        AS3Parser.logicalANDExpression_return logicalANDExpression418 = null;


        Object LOR417_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1440:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
            // com/shin1ogawa/as3/AS3.g:1440:4: logicalANDExpression ( LOR logicalANDExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression5553);
            logicalANDExpression416=logicalANDExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalANDExpression416.getTree());
            // com/shin1ogawa/as3/AS3.g:1440:25: ( LOR logicalANDExpression )*
            loop113:
            do {
                int alt113=2;
                int LA113_0 = input.LA(1);

                if ( (LA113_0==LOR) ) {
                    alt113=1;
                }


                switch (alt113) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1440:26: LOR logicalANDExpression
            	    {
            	    LOR417=(Token)match(input,LOR,FOLLOW_LOR_in_logicalORExpression5556); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    LOR417_tree = (Object)adaptor.create(LOR417);
            	    adaptor.addChild(root_0, LOR417_tree);
            	    }
            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression5558);
            	    logicalANDExpression418=logicalANDExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalANDExpression418.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "logicalORExpression"

    public static class logicalORExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "logicalORExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1443:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
    public final AS3Parser.logicalORExpressionNoIn_return logicalORExpressionNoIn() throws RecognitionException {
        AS3Parser.logicalORExpressionNoIn_return retval = new AS3Parser.logicalORExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LOR420=null;
        AS3Parser.logicalANDExpressionNoIn_return logicalANDExpressionNoIn419 = null;

        AS3Parser.logicalANDExpressionNoIn_return logicalANDExpressionNoIn421 = null;


        Object LOR420_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1444:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1444:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn5572);
            logicalANDExpressionNoIn419=logicalANDExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalANDExpressionNoIn419.getTree());
            // com/shin1ogawa/as3/AS3.g:1444:29: ( LOR logicalANDExpressionNoIn )*
            loop114:
            do {
                int alt114=2;
                int LA114_0 = input.LA(1);

                if ( (LA114_0==LOR) ) {
                    alt114=1;
                }


                switch (alt114) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1444:30: LOR logicalANDExpressionNoIn
            	    {
            	    LOR420=(Token)match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn5575); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    LOR420_tree = (Object)adaptor.create(LOR420);
            	    adaptor.addChild(root_0, LOR420_tree);
            	    }
            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn5577);
            	    logicalANDExpressionNoIn421=logicalANDExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalANDExpressionNoIn421.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "logicalORExpressionNoIn"

    public static class logicalANDExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "logicalANDExpression"
    // com/shin1ogawa/as3/AS3.g:1447:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
    public final AS3Parser.logicalANDExpression_return logicalANDExpression() throws RecognitionException {
        AS3Parser.logicalANDExpression_return retval = new AS3Parser.logicalANDExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LAND423=null;
        AS3Parser.bitwiseORExpression_return bitwiseORExpression422 = null;

        AS3Parser.bitwiseORExpression_return bitwiseORExpression424 = null;


        Object LAND423_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1448:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
            // com/shin1ogawa/as3/AS3.g:1448:4: bitwiseORExpression ( LAND bitwiseORExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression5590);
            bitwiseORExpression422=bitwiseORExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseORExpression422.getTree());
            // com/shin1ogawa/as3/AS3.g:1448:24: ( LAND bitwiseORExpression )*
            loop115:
            do {
                int alt115=2;
                int LA115_0 = input.LA(1);

                if ( (LA115_0==LAND) ) {
                    alt115=1;
                }


                switch (alt115) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1448:25: LAND bitwiseORExpression
            	    {
            	    LAND423=(Token)match(input,LAND,FOLLOW_LAND_in_logicalANDExpression5593); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    LAND423_tree = (Object)adaptor.create(LAND423);
            	    adaptor.addChild(root_0, LAND423_tree);
            	    }
            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression5595);
            	    bitwiseORExpression424=bitwiseORExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseORExpression424.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "logicalANDExpression"

    public static class logicalANDExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "logicalANDExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1451:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
    public final AS3Parser.logicalANDExpressionNoIn_return logicalANDExpressionNoIn() throws RecognitionException {
        AS3Parser.logicalANDExpressionNoIn_return retval = new AS3Parser.logicalANDExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LAND426=null;
        AS3Parser.bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn425 = null;

        AS3Parser.bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn427 = null;


        Object LAND426_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1452:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1452:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn5608);
            bitwiseORExpressionNoIn425=bitwiseORExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseORExpressionNoIn425.getTree());
            // com/shin1ogawa/as3/AS3.g:1452:28: ( LAND bitwiseORExpressionNoIn )*
            loop116:
            do {
                int alt116=2;
                int LA116_0 = input.LA(1);

                if ( (LA116_0==LAND) ) {
                    alt116=1;
                }


                switch (alt116) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1452:29: LAND bitwiseORExpressionNoIn
            	    {
            	    LAND426=(Token)match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn5611); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    LAND426_tree = (Object)adaptor.create(LAND426);
            	    adaptor.addChild(root_0, LAND426_tree);
            	    }
            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn5613);
            	    bitwiseORExpressionNoIn427=bitwiseORExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseORExpressionNoIn427.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "logicalANDExpressionNoIn"

    public static class bitwiseORExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bitwiseORExpression"
    // com/shin1ogawa/as3/AS3.g:1456:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
    public final AS3Parser.bitwiseORExpression_return bitwiseORExpression() throws RecognitionException {
        AS3Parser.bitwiseORExpression_return retval = new AS3Parser.bitwiseORExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token OR429=null;
        AS3Parser.bitwiseXORExpression_return bitwiseXORExpression428 = null;

        AS3Parser.bitwiseXORExpression_return bitwiseXORExpression430 = null;


        Object OR429_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1457:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
            // com/shin1ogawa/as3/AS3.g:1457:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression5627);
            bitwiseXORExpression428=bitwiseXORExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseXORExpression428.getTree());
            // com/shin1ogawa/as3/AS3.g:1457:25: ( OR bitwiseXORExpression )*
            loop117:
            do {
                int alt117=2;
                int LA117_0 = input.LA(1);

                if ( (LA117_0==OR) ) {
                    alt117=1;
                }


                switch (alt117) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1457:26: OR bitwiseXORExpression
            	    {
            	    OR429=(Token)match(input,OR,FOLLOW_OR_in_bitwiseORExpression5630); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    OR429_tree = (Object)adaptor.create(OR429);
            	    adaptor.addChild(root_0, OR429_tree);
            	    }
            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression5632);
            	    bitwiseXORExpression430=bitwiseXORExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseXORExpression430.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bitwiseORExpression"

    public static class bitwiseORExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bitwiseORExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1460:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
    public final AS3Parser.bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn() throws RecognitionException {
        AS3Parser.bitwiseORExpressionNoIn_return retval = new AS3Parser.bitwiseORExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token OR432=null;
        AS3Parser.bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn431 = null;

        AS3Parser.bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn433 = null;


        Object OR432_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1461:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1461:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn5645);
            bitwiseXORExpressionNoIn431=bitwiseXORExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseXORExpressionNoIn431.getTree());
            // com/shin1ogawa/as3/AS3.g:1461:29: ( OR bitwiseXORExpressionNoIn )*
            loop118:
            do {
                int alt118=2;
                int LA118_0 = input.LA(1);

                if ( (LA118_0==OR) ) {
                    alt118=1;
                }


                switch (alt118) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1461:30: OR bitwiseXORExpressionNoIn
            	    {
            	    OR432=(Token)match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn5648); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    OR432_tree = (Object)adaptor.create(OR432);
            	    adaptor.addChild(root_0, OR432_tree);
            	    }
            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn5650);
            	    bitwiseXORExpressionNoIn433=bitwiseXORExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseXORExpressionNoIn433.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bitwiseORExpressionNoIn"

    public static class bitwiseXORExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bitwiseXORExpression"
    // com/shin1ogawa/as3/AS3.g:1464:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
    public final AS3Parser.bitwiseXORExpression_return bitwiseXORExpression() throws RecognitionException {
        AS3Parser.bitwiseXORExpression_return retval = new AS3Parser.bitwiseXORExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XOR435=null;
        AS3Parser.bitwiseANDExpression_return bitwiseANDExpression434 = null;

        AS3Parser.bitwiseANDExpression_return bitwiseANDExpression436 = null;


        Object XOR435_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1465:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
            // com/shin1ogawa/as3/AS3.g:1465:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression5663);
            bitwiseANDExpression434=bitwiseANDExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseANDExpression434.getTree());
            // com/shin1ogawa/as3/AS3.g:1465:25: ( XOR bitwiseANDExpression )*
            loop119:
            do {
                int alt119=2;
                int LA119_0 = input.LA(1);

                if ( (LA119_0==XOR) ) {
                    alt119=1;
                }


                switch (alt119) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1465:26: XOR bitwiseANDExpression
            	    {
            	    XOR435=(Token)match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression5666); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    XOR435_tree = (Object)adaptor.create(XOR435);
            	    adaptor.addChild(root_0, XOR435_tree);
            	    }
            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression5668);
            	    bitwiseANDExpression436=bitwiseANDExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseANDExpression436.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bitwiseXORExpression"

    public static class bitwiseXORExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bitwiseXORExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1468:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
    public final AS3Parser.bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn() throws RecognitionException {
        AS3Parser.bitwiseXORExpressionNoIn_return retval = new AS3Parser.bitwiseXORExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token XOR438=null;
        AS3Parser.bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn437 = null;

        AS3Parser.bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn439 = null;


        Object XOR438_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1469:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1469:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn5681);
            bitwiseANDExpressionNoIn437=bitwiseANDExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseANDExpressionNoIn437.getTree());
            // com/shin1ogawa/as3/AS3.g:1469:29: ( XOR bitwiseANDExpressionNoIn )*
            loop120:
            do {
                int alt120=2;
                int LA120_0 = input.LA(1);

                if ( (LA120_0==XOR) ) {
                    alt120=1;
                }


                switch (alt120) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1469:30: XOR bitwiseANDExpressionNoIn
            	    {
            	    XOR438=(Token)match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn5684); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    XOR438_tree = (Object)adaptor.create(XOR438);
            	    adaptor.addChild(root_0, XOR438_tree);
            	    }
            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn5686);
            	    bitwiseANDExpressionNoIn439=bitwiseANDExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseANDExpressionNoIn439.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bitwiseXORExpressionNoIn"

    public static class bitwiseANDExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bitwiseANDExpression"
    // com/shin1ogawa/as3/AS3.g:1472:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
    public final AS3Parser.bitwiseANDExpression_return bitwiseANDExpression() throws RecognitionException {
        AS3Parser.bitwiseANDExpression_return retval = new AS3Parser.bitwiseANDExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token AND441=null;
        AS3Parser.equalityExpression_return equalityExpression440 = null;

        AS3Parser.equalityExpression_return equalityExpression442 = null;


        Object AND441_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1473:2: ( equalityExpression ( AND equalityExpression )* )
            // com/shin1ogawa/as3/AS3.g:1473:4: equalityExpression ( AND equalityExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression5699);
            equalityExpression440=equalityExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, equalityExpression440.getTree());
            // com/shin1ogawa/as3/AS3.g:1473:23: ( AND equalityExpression )*
            loop121:
            do {
                int alt121=2;
                int LA121_0 = input.LA(1);

                if ( (LA121_0==AND) ) {
                    alt121=1;
                }


                switch (alt121) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1473:24: AND equalityExpression
            	    {
            	    AND441=(Token)match(input,AND,FOLLOW_AND_in_bitwiseANDExpression5702); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    AND441_tree = (Object)adaptor.create(AND441);
            	    adaptor.addChild(root_0, AND441_tree);
            	    }
            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression5704);
            	    equalityExpression442=equalityExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, equalityExpression442.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bitwiseANDExpression"

    public static class bitwiseANDExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "bitwiseANDExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1476:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
    public final AS3Parser.bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn() throws RecognitionException {
        AS3Parser.bitwiseANDExpressionNoIn_return retval = new AS3Parser.bitwiseANDExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token AND444=null;
        AS3Parser.equalityExpressionNoIn_return equalityExpressionNoIn443 = null;

        AS3Parser.equalityExpressionNoIn_return equalityExpressionNoIn445 = null;


        Object AND444_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1477:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1477:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn5717);
            equalityExpressionNoIn443=equalityExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, equalityExpressionNoIn443.getTree());
            // com/shin1ogawa/as3/AS3.g:1477:27: ( AND equalityExpressionNoIn )*
            loop122:
            do {
                int alt122=2;
                int LA122_0 = input.LA(1);

                if ( (LA122_0==AND) ) {
                    alt122=1;
                }


                switch (alt122) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1477:28: AND equalityExpressionNoIn
            	    {
            	    AND444=(Token)match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn5720); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    AND444_tree = (Object)adaptor.create(AND444);
            	    adaptor.addChild(root_0, AND444_tree);
            	    }
            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn5722);
            	    equalityExpressionNoIn445=equalityExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, equalityExpressionNoIn445.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "bitwiseANDExpressionNoIn"

    public static class equalityExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "equalityExpression"
    // com/shin1ogawa/as3/AS3.g:1481:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
    public final AS3Parser.equalityExpression_return equalityExpression() throws RecognitionException {
        AS3Parser.equalityExpression_return retval = new AS3Parser.equalityExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set447=null;
        AS3Parser.relationalExpression_return relationalExpression446 = null;

        AS3Parser.relationalExpression_return relationalExpression448 = null;


        Object set447_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1482:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
            // com/shin1ogawa/as3/AS3.g:1482:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_relationalExpression_in_equalityExpression5736);
            relationalExpression446=relationalExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, relationalExpression446.getTree());
            // com/shin1ogawa/as3/AS3.g:1482:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
            loop123:
            do {
                int alt123=2;
                int LA123_0 = input.LA(1);

                if ( ((LA123_0>=EQ && LA123_0<=NSAME)) ) {
                    alt123=1;
                }


                switch (alt123) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1482:26: ( EQ | NEQ | SAME | NSAME ) relationalExpression
            	    {
            	    set447=(Token)input.LT(1);
            	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
            	        input.consume();
            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set447));
            	        state.errorRecovery=false;state.failed=false;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }

            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression5749);
            	    relationalExpression448=relationalExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, relationalExpression448.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "equalityExpression"

    public static class equalityExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "equalityExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1485:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
    public final AS3Parser.equalityExpressionNoIn_return equalityExpressionNoIn() throws RecognitionException {
        AS3Parser.equalityExpressionNoIn_return retval = new AS3Parser.equalityExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set450=null;
        AS3Parser.relationalExpressionNoIn_return relationalExpressionNoIn449 = null;

        AS3Parser.relationalExpressionNoIn_return relationalExpressionNoIn451 = null;


        Object set450_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1486:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
            // com/shin1ogawa/as3/AS3.g:1486:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn5762);
            relationalExpressionNoIn449=relationalExpressionNoIn();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, relationalExpressionNoIn449.getTree());
            // com/shin1ogawa/as3/AS3.g:1486:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
            loop124:
            do {
                int alt124=2;
                int LA124_0 = input.LA(1);

                if ( ((LA124_0>=EQ && LA124_0<=NSAME)) ) {
                    alt124=1;
                }


                switch (alt124) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1486:30: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
            	    {
            	    set450=(Token)input.LT(1);
            	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
            	        input.consume();
            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set450));
            	        state.errorRecovery=false;state.failed=false;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }

            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn5775);
            	    relationalExpressionNoIn451=relationalExpressionNoIn();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, relationalExpressionNoIn451.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "equalityExpressionNoIn"

    public static class relationalExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "relationalExpression"
    // com/shin1ogawa/as3/AS3.g:1490:1: relationalExpression : shiftExpression ( (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )* ;
    public final AS3Parser.relationalExpression_return relationalExpression() throws RecognitionException {
        AS3Parser.relationalExpression_return retval = new AS3Parser.relationalExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token g=null;
        Token assign=null;
        Token set453=null;
        AS3Parser.shiftExpression_return shiftExpression452 = null;

        AS3Parser.shiftExpression_return shiftExpression454 = null;


        Object g_tree=null;
        Object assign_tree=null;
        Object set453_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1491:2: ( shiftExpression ( (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )* )
            // com/shin1ogawa/as3/AS3.g:1491:4: shiftExpression ( (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_shiftExpression_in_relationalExpression5789);
            shiftExpression452=shiftExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, shiftExpression452.getTree());
            // com/shin1ogawa/as3/AS3.g:1492:2: ( (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )*
            loop127:
            do {
                int alt127=2;
                alt127 = dfa127.predict(input);
                switch (alt127) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1492:3: (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression
            	    {
            	    // com/shin1ogawa/as3/AS3.g:1492:3: (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) )
            	    int alt126=2;
            	    int LA126_0 = input.LA(1);

            	    if ( (LA126_0==GT) ) {
            	        alt126=1;
            	    }
            	    else if ( (LA126_0==AS||(LA126_0>=IN && LA126_0<=INSTANCEOF)||LA126_0==IS||LA126_0==LT||LA126_0==LTE) ) {
            	        alt126=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 126, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt126) {
            	        case 1 :
            	            // com/shin1ogawa/as3/AS3.g:1492:4: g= GT (assign= ASSIGN )?
            	            {
            	            g=(Token)match(input,GT,FOLLOW_GT_in_relationalExpression5797); if (state.failed) return retval;
            	            if ( state.backtracking==0 ) {
            	            g_tree = (Object)adaptor.create(g);
            	            adaptor.addChild(root_0, g_tree);
            	            }
            	            // com/shin1ogawa/as3/AS3.g:1492:9: (assign= ASSIGN )?
            	            int alt125=2;
            	            int LA125_0 = input.LA(1);

            	            if ( (LA125_0==ASSIGN) ) {
            	                alt125=1;
            	            }
            	            switch (alt125) {
            	                case 1 :
            	                    // com/shin1ogawa/as3/AS3.g:1492:10: assign= ASSIGN
            	                    {
            	                    assign=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_relationalExpression5802); if (state.failed) return retval;
            	                    if ( state.backtracking==0 ) {
            	                    assign_tree = (Object)adaptor.create(assign);
            	                    adaptor.addChild(root_0, assign_tree);
            	                    }

            	                    }
            	                    break;

            	            }

            	            if ( state.backtracking==0 ) {

            	              		if (assign!=null) {
            	              			g.setText(">=");
            	              			g.setType(GTE);
            	              		}
            	              	
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // com/shin1ogawa/as3/AS3.g:1498:6: ( IN | LT | LTE | INSTANCEOF | IS | AS )
            	            {
            	            set453=(Token)input.LT(1);
            	            if ( input.LA(1)==AS||(input.LA(1)>=IN && input.LA(1)<=INSTANCEOF)||input.LA(1)==IS||input.LA(1)==LT||input.LA(1)==LTE ) {
            	                input.consume();
            	                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set453));
            	                state.errorRecovery=false;state.failed=false;
            	            }
            	            else {
            	                if (state.backtracking>0) {state.failed=true; return retval;}
            	                MismatchedSetException mse = new MismatchedSetException(null,input);
            	                throw mse;
            	            }


            	            }
            	            break;

            	    }

            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression5826);
            	    shiftExpression454=shiftExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, shiftExpression454.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "relationalExpression"

    public static class relationalExpressionNoIn_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "relationalExpressionNoIn"
    // com/shin1ogawa/as3/AS3.g:1502:1: relationalExpressionNoIn : shiftExpression ( (g= GT (assign= ASSIGN )? | ( LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )* ;
    public final AS3Parser.relationalExpressionNoIn_return relationalExpressionNoIn() throws RecognitionException {
        AS3Parser.relationalExpressionNoIn_return retval = new AS3Parser.relationalExpressionNoIn_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token g=null;
        Token assign=null;
        Token set456=null;
        AS3Parser.shiftExpression_return shiftExpression455 = null;

        AS3Parser.shiftExpression_return shiftExpression457 = null;


        Object g_tree=null;
        Object assign_tree=null;
        Object set456_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1503:2: ( shiftExpression ( (g= GT (assign= ASSIGN )? | ( LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )* )
            // com/shin1ogawa/as3/AS3.g:1503:4: shiftExpression ( (g= GT (assign= ASSIGN )? | ( LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn5841);
            shiftExpression455=shiftExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, shiftExpression455.getTree());
            // com/shin1ogawa/as3/AS3.g:1504:2: ( (g= GT (assign= ASSIGN )? | ( LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )*
            loop130:
            do {
                int alt130=2;
                int LA130_0 = input.LA(1);

                if ( (LA130_0==AS||LA130_0==INSTANCEOF||LA130_0==IS||(LA130_0>=LT && LA130_0<=LTE)) ) {
                    alt130=1;
                }


                switch (alt130) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1504:3: (g= GT (assign= ASSIGN )? | ( LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression
            	    {
            	    // com/shin1ogawa/as3/AS3.g:1504:3: (g= GT (assign= ASSIGN )? | ( LT | LTE | INSTANCEOF | IS | AS ) )
            	    int alt129=2;
            	    int LA129_0 = input.LA(1);

            	    if ( (LA129_0==GT) ) {
            	        alt129=1;
            	    }
            	    else if ( (LA129_0==AS||LA129_0==INSTANCEOF||LA129_0==IS||LA129_0==LT||LA129_0==LTE) ) {
            	        alt129=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 129, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt129) {
            	        case 1 :
            	            // com/shin1ogawa/as3/AS3.g:1504:4: g= GT (assign= ASSIGN )?
            	            {
            	            g=(Token)match(input,GT,FOLLOW_GT_in_relationalExpressionNoIn5849); if (state.failed) return retval;
            	            if ( state.backtracking==0 ) {
            	            g_tree = (Object)adaptor.create(g);
            	            adaptor.addChild(root_0, g_tree);
            	            }
            	            // com/shin1ogawa/as3/AS3.g:1504:9: (assign= ASSIGN )?
            	            int alt128=2;
            	            int LA128_0 = input.LA(1);

            	            if ( (LA128_0==ASSIGN) ) {
            	                alt128=1;
            	            }
            	            switch (alt128) {
            	                case 1 :
            	                    // com/shin1ogawa/as3/AS3.g:1504:10: assign= ASSIGN
            	                    {
            	                    assign=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_relationalExpressionNoIn5854); if (state.failed) return retval;
            	                    if ( state.backtracking==0 ) {
            	                    assign_tree = (Object)adaptor.create(assign);
            	                    adaptor.addChild(root_0, assign_tree);
            	                    }

            	                    }
            	                    break;

            	            }

            	            if ( state.backtracking==0 ) {

            	              		if (assign!=null) {
            	              			g.setText(">=");
            	              			g.setType(GTE);
            	              		}
            	              	
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // com/shin1ogawa/as3/AS3.g:1510:5: ( LT | LTE | INSTANCEOF | IS | AS )
            	            {
            	            set456=(Token)input.LT(1);
            	            if ( input.LA(1)==AS||input.LA(1)==INSTANCEOF||input.LA(1)==IS||input.LA(1)==LT||input.LA(1)==LTE ) {
            	                input.consume();
            	                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set456));
            	                state.errorRecovery=false;state.failed=false;
            	            }
            	            else {
            	                if (state.backtracking>0) {state.failed=true; return retval;}
            	                MismatchedSetException mse = new MismatchedSetException(null,input);
            	                throw mse;
            	            }


            	            }
            	            break;

            	    }

            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn5876);
            	    shiftExpression457=shiftExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, shiftExpression457.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "relationalExpressionNoIn"

    public static class shiftExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "shiftExpression"
    // com/shin1ogawa/as3/AS3.g:1515:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
    public final AS3Parser.shiftExpression_return shiftExpression() throws RecognitionException {
        AS3Parser.shiftExpression_return retval = new AS3Parser.shiftExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set459=null;
        AS3Parser.additiveExpression_return additiveExpression458 = null;

        AS3Parser.additiveExpression_return additiveExpression460 = null;


        Object set459_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1516:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
            // com/shin1ogawa/as3/AS3.g:1516:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_additiveExpression_in_shiftExpression5892);
            additiveExpression458=additiveExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, additiveExpression458.getTree());
            // com/shin1ogawa/as3/AS3.g:1516:23: ( ( SHL | SHR | SHU ) additiveExpression )*
            loop131:
            do {
                int alt131=2;
                int LA131_0 = input.LA(1);

                if ( ((LA131_0>=SHL && LA131_0<=SHU)) ) {
                    alt131=1;
                }


                switch (alt131) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1516:24: ( SHL | SHR | SHU ) additiveExpression
            	    {
            	    set459=(Token)input.LT(1);
            	    if ( (input.LA(1)>=SHL && input.LA(1)<=SHU) ) {
            	        input.consume();
            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set459));
            	        state.errorRecovery=false;state.failed=false;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }

            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression5903);
            	    additiveExpression460=additiveExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, additiveExpression460.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "shiftExpression"

    public static class additiveExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "additiveExpression"
    // com/shin1ogawa/as3/AS3.g:1520:1: additiveExpression : multiplicativeExpression ( ( PLUS | SUB ) multiplicativeExpression )* ;
    public final AS3Parser.additiveExpression_return additiveExpression() throws RecognitionException {
        AS3Parser.additiveExpression_return retval = new AS3Parser.additiveExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set462=null;
        AS3Parser.multiplicativeExpression_return multiplicativeExpression461 = null;

        AS3Parser.multiplicativeExpression_return multiplicativeExpression463 = null;


        Object set462_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1521:2: ( multiplicativeExpression ( ( PLUS | SUB ) multiplicativeExpression )* )
            // com/shin1ogawa/as3/AS3.g:1521:4: multiplicativeExpression ( ( PLUS | SUB ) multiplicativeExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression5917);
            multiplicativeExpression461=multiplicativeExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, multiplicativeExpression461.getTree());
            // com/shin1ogawa/as3/AS3.g:1521:29: ( ( PLUS | SUB ) multiplicativeExpression )*
            loop132:
            do {
                int alt132=2;
                alt132 = dfa132.predict(input);
                switch (alt132) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1521:30: ( PLUS | SUB ) multiplicativeExpression
            	    {
            	    set462=(Token)input.LT(1);
            	    if ( (input.LA(1)>=PLUS && input.LA(1)<=SUB) ) {
            	        input.consume();
            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set462));
            	        state.errorRecovery=false;state.failed=false;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }

            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression5926);
            	    multiplicativeExpression463=multiplicativeExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, multiplicativeExpression463.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "additiveExpression"

    public static class multiplicativeExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "multiplicativeExpression"
    // com/shin1ogawa/as3/AS3.g:1525:1: multiplicativeExpression : unaryExpression ( ( STAR | DIV | MOD ) unaryExpression )* ;
    public final AS3Parser.multiplicativeExpression_return multiplicativeExpression() throws RecognitionException {
        AS3Parser.multiplicativeExpression_return retval = new AS3Parser.multiplicativeExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set465=null;
        AS3Parser.unaryExpression_return unaryExpression464 = null;

        AS3Parser.unaryExpression_return unaryExpression466 = null;


        Object set465_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1526:2: ( unaryExpression ( ( STAR | DIV | MOD ) unaryExpression )* )
            // com/shin1ogawa/as3/AS3.g:1526:4: unaryExpression ( ( STAR | DIV | MOD ) unaryExpression )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression5940);
            unaryExpression464=unaryExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpression464.getTree());
            // com/shin1ogawa/as3/AS3.g:1526:20: ( ( STAR | DIV | MOD ) unaryExpression )*
            loop133:
            do {
                int alt133=2;
                alt133 = dfa133.predict(input);
                switch (alt133) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1526:21: ( STAR | DIV | MOD ) unaryExpression
            	    {
            	    set465=(Token)input.LT(1);
            	    if ( (input.LA(1)>=STAR && input.LA(1)<=MOD) ) {
            	        input.consume();
            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set465));
            	        state.errorRecovery=false;state.failed=false;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return retval;}
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }

            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression5950);
            	    unaryExpression466=unaryExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpression466.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "multiplicativeExpression"

    public static class unaryExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "unaryExpression"
    // com/shin1ogawa/as3/AS3.g:1530:1: unaryExpression : ( postfixExpression | unaryOp postfixExpression );
    public final AS3Parser.unaryExpression_return unaryExpression() throws RecognitionException {
        AS3Parser.unaryExpression_return retval = new AS3Parser.unaryExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.postfixExpression_return postfixExpression467 = null;

        AS3Parser.unaryOp_return unaryOp468 = null;

        AS3Parser.postfixExpression_return postfixExpression469 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1531:2: ( postfixExpression | unaryOp postfixExpression )
            int alt134=2;
            switch ( input.LA(1) ) {
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NATIVE:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TO:
            case TRUE:
            case TRY:
            case USE:
            case VAR:
            case WHILE:
            case WITH:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case INCLUDE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
            case LCURLY:
            case LPAREN:
            case LBRACK:
            case LT:
            case STAR:
            case XML_AT:
            case XML_LS_STD:
            case SINGLE_QUOTE_LITERAL:
            case DOUBLE_QUOTE_LITERAL:
            case REGULAR_EXPR_LITERAL:
            case HEX_NUMBER_LITERAL:
            case DEC_NUMBER_LITERAL:
            case IDENTIFIER:
            case XML_COMMENT:
            case XML_CDATA:
            case XML_PI:
                {
                alt134=1;
                }
                break;
            case DELETE:
            case TYPEOF:
            case VOID:
                {
                int LA134_2 = input.LA(2);

                if ( (LA134_2==SUB||LA134_2==XML_NS_OP) ) {
                    alt134=1;
                }
                else if ( ((LA134_2>=AS && LA134_2<=STATIC)||LA134_2==LCURLY||LA134_2==LPAREN||LA134_2==LBRACK||LA134_2==LT||LA134_2==STAR||(LA134_2>=XML_AT && LA134_2<=XML_LS_STD)||(LA134_2>=SINGLE_QUOTE_LITERAL && LA134_2<=DOUBLE_QUOTE_LITERAL)||LA134_2==REGULAR_EXPR_LITERAL||LA134_2==HEX_NUMBER_LITERAL||LA134_2==DEC_NUMBER_LITERAL||LA134_2==IDENTIFIER||(LA134_2>=XML_COMMENT && LA134_2<=XML_PI)) ) {
                    alt134=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 134, 2, input);

                    throw nvae;
                }
                }
                break;
            case PLUS:
            case SUB:
            case INC:
            case DEC:
            case NOT:
            case INV:
                {
                alt134=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 134, 0, input);

                throw nvae;
            }

            switch (alt134) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1531:4: postfixExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression5964);
                    postfixExpression467=postfixExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, postfixExpression467.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1531:24: unaryOp postfixExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_unaryOp_in_unaryExpression5968);
                    unaryOp468=unaryOp();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryOp468.getTree());
                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression5970);
                    postfixExpression469=postfixExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, postfixExpression469.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "unaryExpression"

    public static class unaryOp_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "unaryOp"
    // com/shin1ogawa/as3/AS3.g:1534:1: unaryOp : ( DELETE | VOID | TYPEOF | INC | DEC | PLUS | SUB | INV | NOT ) ;
    public final AS3Parser.unaryOp_return unaryOp() throws RecognitionException {
        AS3Parser.unaryOp_return retval = new AS3Parser.unaryOp_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set470=null;

        Object set470_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1534:9: ( ( DELETE | VOID | TYPEOF | INC | DEC | PLUS | SUB | INV | NOT ) )
            // com/shin1ogawa/as3/AS3.g:1534:11: ( DELETE | VOID | TYPEOF | INC | DEC | PLUS | SUB | INV | NOT )
            {
            root_0 = (Object)adaptor.nil();

            set470=(Token)input.LT(1);
            if ( input.LA(1)==DELETE||input.LA(1)==TYPEOF||input.LA(1)==VOID||(input.LA(1)>=PLUS && input.LA(1)<=SUB)||(input.LA(1)>=INC && input.LA(1)<=DEC)||(input.LA(1)>=NOT && input.LA(1)<=INV) ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set470));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "unaryOp"

    public static class postfixExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "postfixExpression"
    // com/shin1ogawa/as3/AS3.g:1538:1: postfixExpression : leftHandSideExpression ( postfixOp )? ;
    public final AS3Parser.postfixExpression_return postfixExpression() throws RecognitionException {
        AS3Parser.postfixExpression_return retval = new AS3Parser.postfixExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.leftHandSideExpression_return leftHandSideExpression471 = null;

        AS3Parser.postfixOp_return postfixOp472 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1539:2: ( leftHandSideExpression ( postfixOp )? )
            // com/shin1ogawa/as3/AS3.g:1539:4: leftHandSideExpression ( postfixOp )?
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression6026);
            leftHandSideExpression471=leftHandSideExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, leftHandSideExpression471.getTree());
            // com/shin1ogawa/as3/AS3.g:1539:27: ( postfixOp )?
            int alt135=2;
            alt135 = dfa135.predict(input);
            switch (alt135) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: postfixOp
                    {
                    pushFollow(FOLLOW_postfixOp_in_postfixExpression6028);
                    postfixOp472=postfixOp();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, postfixOp472.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "postfixExpression"

    public static class postfixOp_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "postfixOp"
    // com/shin1ogawa/as3/AS3.g:1542:1: postfixOp : ( INC | DEC ) ;
    public final AS3Parser.postfixOp_return postfixOp() throws RecognitionException {
        AS3Parser.postfixOp_return retval = new AS3Parser.postfixOp_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set473=null;

        Object set473_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1543:2: ( ( INC | DEC ) )
            // com/shin1ogawa/as3/AS3.g:1543:4: ( INC | DEC )
            {
            root_0 = (Object)adaptor.nil();

            set473=(Token)input.LT(1);
            if ( (input.LA(1)>=INC && input.LA(1)<=DEC) ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set473));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "postfixOp"

    public static class memberExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "memberExpression"
    // com/shin1ogawa/as3/AS3.g:1547:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
    public final AS3Parser.memberExpression_return memberExpression() throws RecognitionException {
        AS3Parser.memberExpression_return retval = new AS3Parser.memberExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.primaryExpression_return primaryExpression474 = null;

        AS3Parser.functionExpression_return functionExpression475 = null;

        AS3Parser.newExpression_return newExpression476 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1548:2: ( primaryExpression | functionExpression | newExpression )
            int alt136=3;
            switch ( input.LA(1) ) {
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NATIVE:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TO:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VAR:
            case VOID:
            case WHILE:
            case WITH:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case INCLUDE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
            case LCURLY:
            case LPAREN:
            case LBRACK:
            case LT:
            case STAR:
            case XML_AT:
            case XML_LS_STD:
            case SINGLE_QUOTE_LITERAL:
            case DOUBLE_QUOTE_LITERAL:
            case REGULAR_EXPR_LITERAL:
            case HEX_NUMBER_LITERAL:
            case DEC_NUMBER_LITERAL:
            case IDENTIFIER:
            case XML_COMMENT:
            case XML_CDATA:
            case XML_PI:
                {
                alt136=1;
                }
                break;
            case FUNCTION:
                {
                int LA136_2 = input.LA(2);

                if ( (LA136_2==SUB||LA136_2==XML_NS_OP) ) {
                    alt136=1;
                }
                else if ( (LA136_2==LPAREN||LA136_2==IDENTIFIER) ) {
                    alt136=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 136, 2, input);

                    throw nvae;
                }
                }
                break;
            case NEW:
                {
                int LA136_3 = input.LA(2);

                if ( ((LA136_3>=AS && LA136_3<=STATIC)||LA136_3==LCURLY||LA136_3==LPAREN||LA136_3==LBRACK||LA136_3==LT||LA136_3==STAR||(LA136_3>=XML_AT && LA136_3<=XML_LS_STD)||(LA136_3>=SINGLE_QUOTE_LITERAL && LA136_3<=DOUBLE_QUOTE_LITERAL)||LA136_3==REGULAR_EXPR_LITERAL||LA136_3==HEX_NUMBER_LITERAL||LA136_3==DEC_NUMBER_LITERAL||LA136_3==IDENTIFIER||(LA136_3>=XML_COMMENT && LA136_3<=XML_PI)) ) {
                    alt136=3;
                }
                else if ( (LA136_3==SUB||LA136_3==XML_NS_OP) ) {
                    alt136=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 136, 3, input);

                    throw nvae;
                }
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 136, 0, input);

                throw nvae;
            }

            switch (alt136) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1548:4: primaryExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_primaryExpression_in_memberExpression6058);
                    primaryExpression474=primaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, primaryExpression474.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1548:24: functionExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_functionExpression_in_memberExpression6062);
                    functionExpression475=functionExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, functionExpression475.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1548:45: newExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_newExpression_in_memberExpression6066);
                    newExpression476=newExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, newExpression476.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "memberExpression"

    public static class newExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "newExpression"
    // com/shin1ogawa/as3/AS3.g:1551:1: newExpression : NEW primaryExpression ;
    public final AS3Parser.newExpression_return newExpression() throws RecognitionException {
        AS3Parser.newExpression_return retval = new AS3Parser.newExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token NEW477=null;
        AS3Parser.primaryExpression_return primaryExpression478 = null;


        Object NEW477_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1552:2: ( NEW primaryExpression )
            // com/shin1ogawa/as3/AS3.g:1552:4: NEW primaryExpression
            {
            root_0 = (Object)adaptor.nil();

            NEW477=(Token)match(input,NEW,FOLLOW_NEW_in_newExpression6077); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            NEW477_tree = (Object)adaptor.create(NEW477);
            adaptor.addChild(root_0, NEW477_tree);
            }
            pushFollow(FOLLOW_primaryExpression_in_newExpression6079);
            primaryExpression478=primaryExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, primaryExpression478.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "newExpression"

    public static class leftHandSideExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "leftHandSideExpression"
    // com/shin1ogawa/as3/AS3.g:1556:1: leftHandSideExpression : memberExpression ( arguments | LBRACK expression RBRACK | DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier | XML_ELLIPSIS eitherIdentifier | DOT parExpression | typePostfixSyntax )* ;
    public final AS3Parser.leftHandSideExpression_return leftHandSideExpression() throws RecognitionException {
        AS3Parser.leftHandSideExpression_return retval = new AS3Parser.leftHandSideExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LBRACK481=null;
        Token RBRACK483=null;
        Token DOT484=null;
        Token XML_NS_OP486=null;
        Token XML_ELLIPSIS488=null;
        Token DOT490=null;
        AS3Parser.memberExpression_return memberExpression479 = null;

        AS3Parser.arguments_return arguments480 = null;

        AS3Parser.expression_return expression482 = null;

        AS3Parser.eitherIdentifier_return eitherIdentifier485 = null;

        AS3Parser.eitherIdentifier_return eitherIdentifier487 = null;

        AS3Parser.eitherIdentifier_return eitherIdentifier489 = null;

        AS3Parser.parExpression_return parExpression491 = null;

        AS3Parser.typePostfixSyntax_return typePostfixSyntax492 = null;


        Object LBRACK481_tree=null;
        Object RBRACK483_tree=null;
        Object DOT484_tree=null;
        Object XML_NS_OP486_tree=null;
        Object XML_ELLIPSIS488_tree=null;
        Object DOT490_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1557:2: ( memberExpression ( arguments | LBRACK expression RBRACK | DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier | XML_ELLIPSIS eitherIdentifier | DOT parExpression | typePostfixSyntax )* )
            // com/shin1ogawa/as3/AS3.g:1557:4: memberExpression ( arguments | LBRACK expression RBRACK | DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier | XML_ELLIPSIS eitherIdentifier | DOT parExpression | typePostfixSyntax )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression6091);
            memberExpression479=memberExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, memberExpression479.getTree());
            // com/shin1ogawa/as3/AS3.g:1557:21: ( arguments | LBRACK expression RBRACK | DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier | XML_ELLIPSIS eitherIdentifier | DOT parExpression | typePostfixSyntax )*
            loop138:
            do {
                int alt138=7;
                alt138 = dfa138.predict(input);
                switch (alt138) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1557:22: arguments
            	    {
            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression6094);
            	    arguments480=arguments();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, arguments480.getTree());

            	    }
            	    break;
            	case 2 :
            	    // com/shin1ogawa/as3/AS3.g:1558:5: LBRACK expression RBRACK
            	    {
            	    LBRACK481=(Token)match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression6100); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    LBRACK481_tree = (Object)adaptor.create(LBRACK481);
            	    adaptor.addChild(root_0, LBRACK481_tree);
            	    }
            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression6102);
            	    expression482=expression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression482.getTree());
            	    RBRACK483=(Token)match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression6104); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    RBRACK483_tree = (Object)adaptor.create(RBRACK483);
            	    adaptor.addChild(root_0, RBRACK483_tree);
            	    }

            	    }
            	    break;
            	case 3 :
            	    // com/shin1ogawa/as3/AS3.g:1560:5: DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier
            	    {
            	    DOT484=(Token)match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression6112); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    DOT484_tree = (Object)adaptor.create(DOT484);
            	    adaptor.addChild(root_0, DOT484_tree);
            	    }
            	    // com/shin1ogawa/as3/AS3.g:1560:9: ( eitherIdentifier XML_NS_OP )?
            	    int alt137=2;
            	    switch ( input.LA(1) ) {
            	        case IDENTIFIER:
            	            {
            	            int LA137_1 = input.LA(2);

            	            if ( (synpred300_AS3()) ) {
            	                alt137=1;
            	            }
            	            }
            	            break;
            	        case XML_AT:
            	            {
            	            int LA137_2 = input.LA(2);

            	            if ( (synpred300_AS3()) ) {
            	                alt137=1;
            	            }
            	            }
            	            break;
            	        case AS:
            	        case BREAK:
            	        case CASE:
            	        case CATCH:
            	        case CLASS:
            	        case CONST:
            	        case CONTINUE:
            	        case DEFAULT:
            	        case DELETE:
            	        case DO:
            	        case ELSE:
            	        case EXTENDS:
            	        case FALSE:
            	        case FINALLY:
            	        case FOR:
            	        case FUNCTION:
            	        case IF:
            	        case IMPLEMENTS:
            	        case IMPORT:
            	        case IN:
            	        case INSTANCEOF:
            	        case INTERFACE:
            	        case INTERNAL:
            	        case IS:
            	        case NEW:
            	        case NULL:
            	        case PACKAGE:
            	        case PRIVATE:
            	        case PROTECTED:
            	        case PUBLIC:
            	        case RETURN:
            	        case SUPER:
            	        case SWITCH:
            	        case THIS:
            	        case THROW:
            	        case TRUE:
            	        case TRY:
            	        case TYPEOF:
            	        case USE:
            	        case VAR:
            	        case VOID:
            	        case WHILE:
            	        case WITH:
            	        case INCLUDE:
            	            {
            	            int LA137_3 = input.LA(2);

            	            if ( (synpred300_AS3()) ) {
            	                alt137=1;
            	            }
            	            }
            	            break;
            	        case NATIVE:
            	        case TO:
            	        case EACH:
            	        case GET:
            	        case SET:
            	        case NAMESPACE:
            	        case DYNAMIC:
            	        case FINAL:
            	        case OVERRIDE:
            	        case STATIC:
            	            {
            	            int LA137_4 = input.LA(2);

            	            if ( (synpred300_AS3()) ) {
            	                alt137=1;
            	            }
            	            }
            	            break;
            	        case STAR:
            	            {
            	            int LA137_5 = input.LA(2);

            	            if ( (synpred300_AS3()) ) {
            	                alt137=1;
            	            }
            	            }
            	            break;
            	    }

            	    switch (alt137) {
            	        case 1 :
            	            // com/shin1ogawa/as3/AS3.g:1560:10: eitherIdentifier XML_NS_OP
            	            {
            	            pushFollow(FOLLOW_eitherIdentifier_in_leftHandSideExpression6115);
            	            eitherIdentifier485=eitherIdentifier();

            	            state._fsp--;
            	            if (state.failed) return retval;
            	            if ( state.backtracking==0 ) adaptor.addChild(root_0, eitherIdentifier485.getTree());
            	            XML_NS_OP486=(Token)match(input,XML_NS_OP,FOLLOW_XML_NS_OP_in_leftHandSideExpression6117); if (state.failed) return retval;
            	            if ( state.backtracking==0 ) {
            	            XML_NS_OP486_tree = (Object)adaptor.create(XML_NS_OP486);
            	            adaptor.addChild(root_0, XML_NS_OP486_tree);
            	            }

            	            }
            	            break;

            	    }

            	    pushFollow(FOLLOW_eitherIdentifier_in_leftHandSideExpression6121);
            	    eitherIdentifier487=eitherIdentifier();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, eitherIdentifier487.getTree());

            	    }
            	    break;
            	case 4 :
            	    // com/shin1ogawa/as3/AS3.g:1561:5: XML_ELLIPSIS eitherIdentifier
            	    {
            	    XML_ELLIPSIS488=(Token)match(input,XML_ELLIPSIS,FOLLOW_XML_ELLIPSIS_in_leftHandSideExpression6127); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    XML_ELLIPSIS488_tree = (Object)adaptor.create(XML_ELLIPSIS488);
            	    adaptor.addChild(root_0, XML_ELLIPSIS488_tree);
            	    }
            	    pushFollow(FOLLOW_eitherIdentifier_in_leftHandSideExpression6129);
            	    eitherIdentifier489=eitherIdentifier();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, eitherIdentifier489.getTree());

            	    }
            	    break;
            	case 5 :
            	    // com/shin1ogawa/as3/AS3.g:1562:5: DOT parExpression
            	    {
            	    DOT490=(Token)match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression6135); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    DOT490_tree = (Object)adaptor.create(DOT490);
            	    adaptor.addChild(root_0, DOT490_tree);
            	    }
            	    pushFollow(FOLLOW_parExpression_in_leftHandSideExpression6137);
            	    parExpression491=parExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, parExpression491.getTree());

            	    }
            	    break;
            	case 6 :
            	    // com/shin1ogawa/as3/AS3.g:1563:5: typePostfixSyntax
            	    {
            	    pushFollow(FOLLOW_typePostfixSyntax_in_leftHandSideExpression6143);
            	    typePostfixSyntax492=typePostfixSyntax();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, typePostfixSyntax492.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "leftHandSideExpression"

    public static class eitherIdentifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "eitherIdentifier"
    // com/shin1ogawa/as3/AS3.g:1567:1: eitherIdentifier : ( IDENTIFIER | xmlPropertyIdentifier | allKeywords );
    public final AS3Parser.eitherIdentifier_return eitherIdentifier() throws RecognitionException {
        AS3Parser.eitherIdentifier_return retval = new AS3Parser.eitherIdentifier_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token IDENTIFIER493=null;
        AS3Parser.xmlPropertyIdentifier_return xmlPropertyIdentifier494 = null;

        AS3Parser.allKeywords_return allKeywords495 = null;


        Object IDENTIFIER493_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1568:2: ( IDENTIFIER | xmlPropertyIdentifier | allKeywords )
            int alt139=3;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                int LA139_1 = input.LA(2);

                if ( (synpred305_AS3()) ) {
                    alt139=1;
                }
                else if ( (synpred306_AS3()) ) {
                    alt139=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 139, 1, input);

                    throw nvae;
                }
                }
                break;
            case STAR:
            case XML_AT:
                {
                alt139=2;
                }
                break;
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VAR:
            case VOID:
            case WHILE:
            case WITH:
            case INCLUDE:
                {
                int LA139_3 = input.LA(2);

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

                    throw nvae;
                }
                }
                break;
            case NATIVE:
            case TO:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
                {
                int LA139_4 = input.LA(2);

                if ( (synpred306_AS3()) ) {
                    alt139=2;
                }
                else if ( (true) ) {
                    alt139=3;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 139, 4, input);

                    throw nvae;
                }
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 139, 0, input);

                throw nvae;
            }

            switch (alt139) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1568:4: IDENTIFIER
                    {
                    root_0 = (Object)adaptor.nil();

                    IDENTIFIER493=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_eitherIdentifier6159); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER493_tree = (Object)adaptor.create(IDENTIFIER493);
                    adaptor.addChild(root_0, IDENTIFIER493_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1568:17: xmlPropertyIdentifier
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlPropertyIdentifier_in_eitherIdentifier6163);
                    xmlPropertyIdentifier494=xmlPropertyIdentifier();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPropertyIdentifier494.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1568:41: allKeywords
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_allKeywords_in_eitherIdentifier6167);
                    allKeywords495=allKeywords();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, allKeywords495.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "eitherIdentifier"

    public static class notQuiteReservedWord_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "notQuiteReservedWord"
    // com/shin1ogawa/as3/AS3.g:1571:1: notQuiteReservedWord : ( TO | NATIVE | EACH | GET | SET | NAMESPACE | DYNAMIC | FINAL | OVERRIDE | STATIC ) ;
    public final AS3Parser.notQuiteReservedWord_return notQuiteReservedWord() throws RecognitionException {
        AS3Parser.notQuiteReservedWord_return retval = new AS3Parser.notQuiteReservedWord_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set496=null;

        Object set496_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1572:2: ( ( TO | NATIVE | EACH | GET | SET | NAMESPACE | DYNAMIC | FINAL | OVERRIDE | STATIC ) )
            // com/shin1ogawa/as3/AS3.g:1572:4: ( TO | NATIVE | EACH | GET | SET | NAMESPACE | DYNAMIC | FINAL | OVERRIDE | STATIC )
            {
            root_0 = (Object)adaptor.nil();

            set496=(Token)input.LT(1);
            if ( input.LA(1)==NATIVE||input.LA(1)==TO||(input.LA(1)>=EACH && input.LA(1)<=NAMESPACE)||(input.LA(1)>=DYNAMIC && input.LA(1)<=STATIC) ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set496));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "notQuiteReservedWord"

    public static class allKeywords_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "allKeywords"
    // com/shin1ogawa/as3/AS3.g:1575:1: allKeywords : ( reservedWord | notQuiteReservedWord ) ;
    public final AS3Parser.allKeywords_return allKeywords() throws RecognitionException {
        AS3Parser.allKeywords_return retval = new AS3Parser.allKeywords_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.reservedWord_return reservedWord497 = null;

        AS3Parser.notQuiteReservedWord_return notQuiteReservedWord498 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1576:2: ( ( reservedWord | notQuiteReservedWord ) )
            // com/shin1ogawa/as3/AS3.g:1576:4: ( reservedWord | notQuiteReservedWord )
            {
            root_0 = (Object)adaptor.nil();

            // com/shin1ogawa/as3/AS3.g:1576:4: ( reservedWord | notQuiteReservedWord )
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( ((LA140_0>=AS && LA140_0<=IS)||(LA140_0>=NEW && LA140_0<=THROW)||(LA140_0>=TRUE && LA140_0<=WITH)||LA140_0==INCLUDE) ) {
                alt140=1;
            }
            else if ( (LA140_0==NATIVE||LA140_0==TO||(LA140_0>=EACH && LA140_0<=NAMESPACE)||(LA140_0>=DYNAMIC && LA140_0<=STATIC)) ) {
                alt140=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 140, 0, input);

                throw nvae;
            }
            switch (alt140) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1576:5: reservedWord
                    {
                    pushFollow(FOLLOW_reservedWord_in_allKeywords6228);
                    reservedWord497=reservedWord();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, reservedWord497.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1576:20: notQuiteReservedWord
                    {
                    pushFollow(FOLLOW_notQuiteReservedWord_in_allKeywords6232);
                    notQuiteReservedWord498=notQuiteReservedWord();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, notQuiteReservedWord498.getTree());

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "allKeywords"

    public static class reservedWord_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "reservedWord"
    // com/shin1ogawa/as3/AS3.g:1579:1: reservedWord : ( AS | BREAK | CASE | CATCH | CLASS | CONST | CONTINUE | DEFAULT | DELETE | DO | ELSE | EXTENDS | FALSE | FINALLY | FOR | FUNCTION | IF | IMPLEMENTS | IMPORT | IN | INSTANCEOF | INTERFACE | INTERNAL | IS | NEW | NULL | PACKAGE | PRIVATE | PROTECTED | PUBLIC | RETURN | SUPER | SWITCH | THIS | THROW | TRUE | TRY | TYPEOF | USE | VAR | VOID | WHILE | WITH | INCLUDE ) ;
    public final AS3Parser.reservedWord_return reservedWord() throws RecognitionException {
        AS3Parser.reservedWord_return retval = new AS3Parser.reservedWord_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token set499=null;

        Object set499_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1580:2: ( ( AS | BREAK | CASE | CATCH | CLASS | CONST | CONTINUE | DEFAULT | DELETE | DO | ELSE | EXTENDS | FALSE | FINALLY | FOR | FUNCTION | IF | IMPLEMENTS | IMPORT | IN | INSTANCEOF | INTERFACE | INTERNAL | IS | NEW | NULL | PACKAGE | PRIVATE | PROTECTED | PUBLIC | RETURN | SUPER | SWITCH | THIS | THROW | TRUE | TRY | TYPEOF | USE | VAR | VOID | WHILE | WITH | INCLUDE ) )
            // com/shin1ogawa/as3/AS3.g:1580:4: ( AS | BREAK | CASE | CATCH | CLASS | CONST | CONTINUE | DEFAULT | DELETE | DO | ELSE | EXTENDS | FALSE | FINALLY | FOR | FUNCTION | IF | IMPLEMENTS | IMPORT | IN | INSTANCEOF | INTERFACE | INTERNAL | IS | NEW | NULL | PACKAGE | PRIVATE | PROTECTED | PUBLIC | RETURN | SUPER | SWITCH | THIS | THROW | TRUE | TRY | TYPEOF | USE | VAR | VOID | WHILE | WITH | INCLUDE )
            {
            root_0 = (Object)adaptor.nil();

            set499=(Token)input.LT(1);
            if ( (input.LA(1)>=AS && input.LA(1)<=IS)||(input.LA(1)>=NEW && input.LA(1)<=THROW)||(input.LA(1)>=TRUE && input.LA(1)<=WITH)||input.LA(1)==INCLUDE ) {
                input.consume();
                if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set499));
                state.errorRecovery=false;state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "reservedWord"

    public static class arguments_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "arguments"
    // com/shin1ogawa/as3/AS3.g:1598:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN ;
    public final AS3Parser.arguments_return arguments() throws RecognitionException {
        AS3Parser.arguments_return retval = new AS3Parser.arguments_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LPAREN500=null;
        Token COMMA502=null;
        Token RPAREN504=null;
        AS3Parser.assignmentExpression_return assignmentExpression501 = null;

        AS3Parser.assignmentExpression_return assignmentExpression503 = null;


        Object LPAREN500_tree=null;
        Object COMMA502_tree=null;
        Object RPAREN504_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1599:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN )
            // com/shin1ogawa/as3/AS3.g:1599:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
            {
            root_0 = (Object)adaptor.nil();

            LPAREN500=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_arguments6449); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LPAREN500_tree = (Object)adaptor.create(LPAREN500);
            adaptor.addChild(root_0, LPAREN500_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1599:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
            int alt142=2;
            int LA142_0 = input.LA(1);

            if ( ((LA142_0>=AS && LA142_0<=STATIC)||LA142_0==VOID||LA142_0==LCURLY||LA142_0==LPAREN||LA142_0==LBRACK||LA142_0==LT||(LA142_0>=PLUS && LA142_0<=STAR)||(LA142_0>=INC && LA142_0<=DEC)||(LA142_0>=NOT && LA142_0<=INV)||(LA142_0>=XML_AT && LA142_0<=XML_LS_STD)||(LA142_0>=SINGLE_QUOTE_LITERAL && LA142_0<=DOUBLE_QUOTE_LITERAL)||LA142_0==REGULAR_EXPR_LITERAL||LA142_0==HEX_NUMBER_LITERAL||LA142_0==DEC_NUMBER_LITERAL||LA142_0==IDENTIFIER||(LA142_0>=XML_COMMENT && LA142_0<=XML_PI)) ) {
                alt142=1;
            }
            switch (alt142) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1599:12: assignmentExpression ( COMMA assignmentExpression )*
                    {
                    pushFollow(FOLLOW_assignmentExpression_in_arguments6452);
                    assignmentExpression501=assignmentExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression501.getTree());
                    // com/shin1ogawa/as3/AS3.g:1599:33: ( COMMA assignmentExpression )*
                    loop141:
                    do {
                        int alt141=2;
                        int LA141_0 = input.LA(1);

                        if ( (LA141_0==COMMA) ) {
                            alt141=1;
                        }


                        switch (alt141) {
                    	case 1 :
                    	    // com/shin1ogawa/as3/AS3.g:1599:34: COMMA assignmentExpression
                    	    {
                    	    COMMA502=(Token)match(input,COMMA,FOLLOW_COMMA_in_arguments6455); if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) {
                    	    COMMA502_tree = (Object)adaptor.create(COMMA502);
                    	    adaptor.addChild(root_0, COMMA502_tree);
                    	    }
                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments6457);
                    	    assignmentExpression503=assignmentExpression();

                    	    state._fsp--;
                    	    if (state.failed) return retval;
                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression503.getTree());

                    	    }
                    	    break;

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


                    }
                    break;

            }

            RPAREN504=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_arguments6463); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RPAREN504_tree = (Object)adaptor.create(RPAREN504);
            adaptor.addChild(root_0, RPAREN504_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "arguments"

    public static class suffix_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "suffix"
    // com/shin1ogawa/as3/AS3.g:1603:1: suffix : ( indexSuffix | propertyReferenceSuffix );
    public final AS3Parser.suffix_return suffix() throws RecognitionException {
        AS3Parser.suffix_return retval = new AS3Parser.suffix_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.indexSuffix_return indexSuffix505 = null;

        AS3Parser.propertyReferenceSuffix_return propertyReferenceSuffix506 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1603:8: ( indexSuffix | propertyReferenceSuffix )
            int alt143=2;
            int LA143_0 = input.LA(1);

            if ( (LA143_0==LBRACK) ) {
                alt143=1;
            }
            else if ( (LA143_0==DOT) ) {
                alt143=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 143, 0, input);

                throw nvae;
            }
            switch (alt143) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1603:10: indexSuffix
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_indexSuffix_in_suffix6476);
                    indexSuffix505=indexSuffix();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, indexSuffix505.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1603:24: propertyReferenceSuffix
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_propertyReferenceSuffix_in_suffix6480);
                    propertyReferenceSuffix506=propertyReferenceSuffix();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyReferenceSuffix506.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "suffix"

    public static class indexSuffix_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "indexSuffix"
    // com/shin1ogawa/as3/AS3.g:1607:1: indexSuffix : LBRACK expression RBRACK ;
    public final AS3Parser.indexSuffix_return indexSuffix() throws RecognitionException {
        AS3Parser.indexSuffix_return retval = new AS3Parser.indexSuffix_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LBRACK507=null;
        Token RBRACK509=null;
        AS3Parser.expression_return expression508 = null;


        Object LBRACK507_tree=null;
        Object RBRACK509_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1608:2: ( LBRACK expression RBRACK )
            // com/shin1ogawa/as3/AS3.g:1608:4: LBRACK expression RBRACK
            {
            root_0 = (Object)adaptor.nil();

            LBRACK507=(Token)match(input,LBRACK,FOLLOW_LBRACK_in_indexSuffix6493); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LBRACK507_tree = (Object)adaptor.create(LBRACK507);
            adaptor.addChild(root_0, LBRACK507_tree);
            }
            pushFollow(FOLLOW_expression_in_indexSuffix6495);
            expression508=expression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression508.getTree());
            RBRACK509=(Token)match(input,RBRACK,FOLLOW_RBRACK_in_indexSuffix6497); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RBRACK509_tree = (Object)adaptor.create(RBRACK509);
            adaptor.addChild(root_0, RBRACK509_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "indexSuffix"

    public static class propertyReferenceSuffix_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "propertyReferenceSuffix"
    // com/shin1ogawa/as3/AS3.g:1611:1: propertyReferenceSuffix : ( DOT IDENTIFIER | DOT xmlPropertyIdentifier | DOT );
    public final AS3Parser.propertyReferenceSuffix_return propertyReferenceSuffix() throws RecognitionException {
        AS3Parser.propertyReferenceSuffix_return retval = new AS3Parser.propertyReferenceSuffix_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token DOT510=null;
        Token IDENTIFIER511=null;
        Token DOT512=null;
        Token DOT514=null;
        AS3Parser.xmlPropertyIdentifier_return xmlPropertyIdentifier513 = null;


        Object DOT510_tree=null;
        Object IDENTIFIER511_tree=null;
        Object DOT512_tree=null;
        Object DOT514_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1612:2: ( DOT IDENTIFIER | DOT xmlPropertyIdentifier | DOT )
            int alt144=3;
            int LA144_0 = input.LA(1);

            if ( (LA144_0==DOT) ) {
                switch ( input.LA(2) ) {
                case IDENTIFIER:
                    {
                    int LA144_2 = input.LA(3);

                    if ( (LA144_2==SUB||LA144_2==XML_NS_OP) ) {
                        alt144=2;
                    }
                    else if ( (LA144_2==EOF) ) {
                        alt144=1;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return retval;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 144, 2, input);

                        throw nvae;
                    }
                    }
                    break;
                case AS:
                case BREAK:
                case CASE:
                case CATCH:
                case CLASS:
                case CONST:
                case CONTINUE:
                case DEFAULT:
                case DELETE:
                case DO:
                case ELSE:
                case EXTENDS:
                case FALSE:
                case FINALLY:
                case FOR:
                case FUNCTION:
                case IF:
                case IMPLEMENTS:
                case IMPORT:
                case IN:
                case INSTANCEOF:
                case INTERFACE:
                case INTERNAL:
                case IS:
                case NATIVE:
                case NEW:
                case NULL:
                case PACKAGE:
                case PRIVATE:
                case PROTECTED:
                case PUBLIC:
                case RETURN:
                case SUPER:
                case SWITCH:
                case THIS:
                case THROW:
                case TO:
                case TRUE:
                case TRY:
                case TYPEOF:
                case USE:
                case VAR:
                case VOID:
                case WHILE:
                case WITH:
                case EACH:
                case GET:
                case SET:
                case NAMESPACE:
                case INCLUDE:
                case DYNAMIC:
                case FINAL:
                case OVERRIDE:
                case STATIC:
                case STAR:
                case XML_AT:
                    {
                    alt144=2;
                    }
                    break;
                case EOF:
                    {
                    alt144=3;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return retval;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 144, 1, input);

                    throw nvae;
                }

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

                throw nvae;
            }
            switch (alt144) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1612:4: DOT IDENTIFIER
                    {
                    root_0 = (Object)adaptor.nil();

                    DOT510=(Token)match(input,DOT,FOLLOW_DOT_in_propertyReferenceSuffix6508); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    DOT510_tree = (Object)adaptor.create(DOT510);
                    adaptor.addChild(root_0, DOT510_tree);
                    }
                    IDENTIFIER511=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_propertyReferenceSuffix6510); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    IDENTIFIER511_tree = (Object)adaptor.create(IDENTIFIER511);
                    adaptor.addChild(root_0, IDENTIFIER511_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1612:21: DOT xmlPropertyIdentifier
                    {
                    root_0 = (Object)adaptor.nil();

                    DOT512=(Token)match(input,DOT,FOLLOW_DOT_in_propertyReferenceSuffix6514); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    DOT512_tree = (Object)adaptor.create(DOT512);
                    adaptor.addChild(root_0, DOT512_tree);
                    }
                    pushFollow(FOLLOW_xmlPropertyIdentifier_in_propertyReferenceSuffix6516);
                    xmlPropertyIdentifier513=xmlPropertyIdentifier();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPropertyIdentifier513.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1613:4: DOT
                    {
                    root_0 = (Object)adaptor.nil();

                    DOT514=(Token)match(input,DOT,FOLLOW_DOT_in_propertyReferenceSuffix6522); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    DOT514_tree = (Object)adaptor.create(DOT514);
                    adaptor.addChild(root_0, DOT514_tree);
                    }

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "propertyReferenceSuffix"

    public static class primaryExpression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "primaryExpression"
    // com/shin1ogawa/as3/AS3.g:1617:1: primaryExpression : primaryExpressionHelper ;
    public final AS3Parser.primaryExpression_return primaryExpression() throws RecognitionException {
        AS3Parser.primaryExpression_return retval = new AS3Parser.primaryExpression_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.primaryExpressionHelper_return primaryExpressionHelper515 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1618:2: ( primaryExpressionHelper )
            // com/shin1ogawa/as3/AS3.g:1618:4: primaryExpressionHelper
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_primaryExpressionHelper_in_primaryExpression6536);
            primaryExpressionHelper515=primaryExpressionHelper();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, primaryExpressionHelper515.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "primaryExpression"

    public static class primaryExpressionHelper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "primaryExpressionHelper"
    // com/shin1ogawa/as3/AS3.g:1622:1: primaryExpressionHelper : ( THIS | SUPER | literal | arrayLiteral | objectLiteral | identifierLiteral | xmlPrimaryExpression | parExpression );
    public final AS3Parser.primaryExpressionHelper_return primaryExpressionHelper() throws RecognitionException {
        AS3Parser.primaryExpressionHelper_return retval = new AS3Parser.primaryExpressionHelper_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token THIS516=null;
        Token SUPER517=null;
        AS3Parser.literal_return literal518 = null;

        AS3Parser.arrayLiteral_return arrayLiteral519 = null;

        AS3Parser.objectLiteral_return objectLiteral520 = null;

        AS3Parser.identifierLiteral_return identifierLiteral521 = null;

        AS3Parser.xmlPrimaryExpression_return xmlPrimaryExpression522 = null;

        AS3Parser.parExpression_return parExpression523 = null;


        Object THIS516_tree=null;
        Object SUPER517_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1623:2: ( THIS | SUPER | literal | arrayLiteral | objectLiteral | identifierLiteral | xmlPrimaryExpression | parExpression )
            int alt145=8;
            alt145 = dfa145.predict(input);
            switch (alt145) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1623:4: THIS
                    {
                    root_0 = (Object)adaptor.nil();

                    THIS516=(Token)match(input,THIS,FOLLOW_THIS_in_primaryExpressionHelper6549); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    THIS516_tree = (Object)adaptor.create(THIS516);
                    adaptor.addChild(root_0, THIS516_tree);
                    }

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1623:11: SUPER
                    {
                    root_0 = (Object)adaptor.nil();

                    SUPER517=(Token)match(input,SUPER,FOLLOW_SUPER_in_primaryExpressionHelper6553); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    SUPER517_tree = (Object)adaptor.create(SUPER517);
                    adaptor.addChild(root_0, SUPER517_tree);
                    }

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1623:19: literal
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_literal_in_primaryExpressionHelper6557);
                    literal518=literal();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal518.getTree());

                    }
                    break;
                case 4 :
                    // com/shin1ogawa/as3/AS3.g:1623:29: arrayLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpressionHelper6561);
                    arrayLiteral519=arrayLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, arrayLiteral519.getTree());

                    }
                    break;
                case 5 :
                    // com/shin1ogawa/as3/AS3.g:1624:4: objectLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_objectLiteral_in_primaryExpressionHelper6567);
                    objectLiteral520=objectLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, objectLiteral520.getTree());

                    }
                    break;
                case 6 :
                    // com/shin1ogawa/as3/AS3.g:1625:4: identifierLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_identifierLiteral_in_primaryExpressionHelper6573);
                    identifierLiteral521=identifierLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, identifierLiteral521.getTree());

                    }
                    break;
                case 7 :
                    // com/shin1ogawa/as3/AS3.g:1626:4: xmlPrimaryExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_xmlPrimaryExpression_in_primaryExpressionHelper6579);
                    xmlPrimaryExpression522=xmlPrimaryExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, xmlPrimaryExpression522.getTree());

                    }
                    break;
                case 8 :
                    // com/shin1ogawa/as3/AS3.g:1627:4: parExpression
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_parExpression_in_primaryExpressionHelper6584);
                    parExpression523=parExpression();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, parExpression523.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "primaryExpressionHelper"

    public static class objectLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "objectLiteral"
    // com/shin1ogawa/as3/AS3.g:1631:1: objectLiteral : LCURLY ( propertyNameAndValueList )? RCURLY ;
    public final AS3Parser.objectLiteral_return objectLiteral() throws RecognitionException {
        AS3Parser.objectLiteral_return retval = new AS3Parser.objectLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LCURLY524=null;
        Token RCURLY526=null;
        AS3Parser.propertyNameAndValueList_return propertyNameAndValueList525 = null;


        Object LCURLY524_tree=null;
        Object RCURLY526_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1632:2: ( LCURLY ( propertyNameAndValueList )? RCURLY )
            // com/shin1ogawa/as3/AS3.g:1632:4: LCURLY ( propertyNameAndValueList )? RCURLY
            {
            root_0 = (Object)adaptor.nil();

            LCURLY524=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_objectLiteral6597); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LCURLY524_tree = (Object)adaptor.create(LCURLY524);
            adaptor.addChild(root_0, LCURLY524_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1632:11: ( propertyNameAndValueList )?
            int alt146=2;
            int LA146_0 = input.LA(1);

            if ( (LA146_0==NATIVE||LA146_0==TO||(LA146_0>=EACH && LA146_0<=NAMESPACE)||(LA146_0>=DYNAMIC && LA146_0<=STATIC)||(LA146_0>=SINGLE_QUOTE_LITERAL && LA146_0<=DOUBLE_QUOTE_LITERAL)||LA146_0==HEX_NUMBER_LITERAL||LA146_0==DEC_NUMBER_LITERAL||LA146_0==IDENTIFIER) ) {
                alt146=1;
            }
            switch (alt146) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: propertyNameAndValueList
                    {
                    pushFollow(FOLLOW_propertyNameAndValueList_in_objectLiteral6599);
                    propertyNameAndValueList525=propertyNameAndValueList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyNameAndValueList525.getTree());

                    }
                    break;

            }

            RCURLY526=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_objectLiteral6602); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RCURLY526_tree = (Object)adaptor.create(RCURLY526);
            adaptor.addChild(root_0, RCURLY526_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "objectLiteral"

    public static class propertyNameAndValueList_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "propertyNameAndValueList"
    // com/shin1ogawa/as3/AS3.g:1635:1: propertyNameAndValueList : propertyNameAndValue ( COMMA propertyNameAndValue )* ;
    public final AS3Parser.propertyNameAndValueList_return propertyNameAndValueList() throws RecognitionException {
        AS3Parser.propertyNameAndValueList_return retval = new AS3Parser.propertyNameAndValueList_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA528=null;
        AS3Parser.propertyNameAndValue_return propertyNameAndValue527 = null;

        AS3Parser.propertyNameAndValue_return propertyNameAndValue529 = null;


        Object COMMA528_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1636:2: ( propertyNameAndValue ( COMMA propertyNameAndValue )* )
            // com/shin1ogawa/as3/AS3.g:1636:4: propertyNameAndValue ( COMMA propertyNameAndValue )*
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_propertyNameAndValue_in_propertyNameAndValueList6614);
            propertyNameAndValue527=propertyNameAndValue();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyNameAndValue527.getTree());
            // com/shin1ogawa/as3/AS3.g:1636:25: ( COMMA propertyNameAndValue )*
            loop147:
            do {
                int alt147=2;
                int LA147_0 = input.LA(1);

                if ( (LA147_0==COMMA) ) {
                    alt147=1;
                }


                switch (alt147) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1636:26: COMMA propertyNameAndValue
            	    {
            	    COMMA528=(Token)match(input,COMMA,FOLLOW_COMMA_in_propertyNameAndValueList6617); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA528_tree = (Object)adaptor.create(COMMA528);
            	    adaptor.addChild(root_0, COMMA528_tree);
            	    }
            	    pushFollow(FOLLOW_propertyNameAndValue_in_propertyNameAndValueList6619);
            	    propertyNameAndValue529=propertyNameAndValue();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyNameAndValue529.getTree());

            	    }
            	    break;

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


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "propertyNameAndValueList"

    public static class propertyNameAndValue_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "propertyNameAndValue"
    // com/shin1ogawa/as3/AS3.g:1639:1: propertyNameAndValue : propertyName COLON assignmentExpression ;
    public final AS3Parser.propertyNameAndValue_return propertyNameAndValue() throws RecognitionException {
        AS3Parser.propertyNameAndValue_return retval = new AS3Parser.propertyNameAndValue_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COLON531=null;
        AS3Parser.propertyName_return propertyName530 = null;

        AS3Parser.assignmentExpression_return assignmentExpression532 = null;


        Object COLON531_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1640:2: ( propertyName COLON assignmentExpression )
            // com/shin1ogawa/as3/AS3.g:1640:4: propertyName COLON assignmentExpression
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_propertyName_in_propertyNameAndValue6632);
            propertyName530=propertyName();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyName530.getTree());
            COLON531=(Token)match(input,COLON,FOLLOW_COLON_in_propertyNameAndValue6634); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            COLON531_tree = (Object)adaptor.create(COLON531);
            adaptor.addChild(root_0, COLON531_tree);
            }
            pushFollow(FOLLOW_assignmentExpression_in_propertyNameAndValue6636);
            assignmentExpression532=assignmentExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression532.getTree());

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "propertyNameAndValue"

    public static class propertyName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "propertyName"
    // com/shin1ogawa/as3/AS3.g:1643:1: propertyName : ( identifierLiteral | stringLiteral | numericLiteral );
    public final AS3Parser.propertyName_return propertyName() throws RecognitionException {
        AS3Parser.propertyName_return retval = new AS3Parser.propertyName_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        AS3Parser.identifierLiteral_return identifierLiteral533 = null;

        AS3Parser.stringLiteral_return stringLiteral534 = null;

        AS3Parser.numericLiteral_return numericLiteral535 = null;



        try {
            // com/shin1ogawa/as3/AS3.g:1644:2: ( identifierLiteral | stringLiteral | numericLiteral )
            int alt148=3;
            switch ( input.LA(1) ) {
            case NATIVE:
            case TO:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
            case IDENTIFIER:
                {
                alt148=1;
                }
                break;
            case SINGLE_QUOTE_LITERAL:
            case DOUBLE_QUOTE_LITERAL:
                {
                alt148=2;
                }
                break;
            case HEX_NUMBER_LITERAL:
            case DEC_NUMBER_LITERAL:
                {
                alt148=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 148, 0, input);

                throw nvae;
            }

            switch (alt148) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1644:4: identifierLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_identifierLiteral_in_propertyName6647);
                    identifierLiteral533=identifierLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, identifierLiteral533.getTree());

                    }
                    break;
                case 2 :
                    // com/shin1ogawa/as3/AS3.g:1644:24: stringLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_stringLiteral_in_propertyName6651);
                    stringLiteral534=stringLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, stringLiteral534.getTree());

                    }
                    break;
                case 3 :
                    // com/shin1ogawa/as3/AS3.g:1644:40: numericLiteral
                    {
                    root_0 = (Object)adaptor.nil();

                    pushFollow(FOLLOW_numericLiteral_in_propertyName6655);
                    numericLiteral535=numericLiteral();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, numericLiteral535.getTree());

                    }
                    break;

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "propertyName"

    public static class arrayLiteral_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "arrayLiteral"
    // com/shin1ogawa/as3/AS3.g:1648:1: arrayLiteral : LBRACK ( elementList )? RBRACK ;
    public final AS3Parser.arrayLiteral_return arrayLiteral() throws RecognitionException {
        AS3Parser.arrayLiteral_return retval = new AS3Parser.arrayLiteral_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LBRACK536=null;
        Token RBRACK538=null;
        AS3Parser.elementList_return elementList537 = null;


        Object LBRACK536_tree=null;
        Object RBRACK538_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1649:2: ( LBRACK ( elementList )? RBRACK )
            // com/shin1ogawa/as3/AS3.g:1649:4: LBRACK ( elementList )? RBRACK
            {
            root_0 = (Object)adaptor.nil();

            LBRACK536=(Token)match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral6668); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LBRACK536_tree = (Object)adaptor.create(LBRACK536);
            adaptor.addChild(root_0, LBRACK536_tree);
            }
            // com/shin1ogawa/as3/AS3.g:1649:11: ( elementList )?
            int alt149=2;
            int LA149_0 = input.LA(1);

            if ( ((LA149_0>=AS && LA149_0<=STATIC)||LA149_0==VOID||LA149_0==LCURLY||LA149_0==LPAREN||LA149_0==LBRACK||LA149_0==LT||(LA149_0>=PLUS && LA149_0<=STAR)||(LA149_0>=INC && LA149_0<=DEC)||(LA149_0>=NOT && LA149_0<=INV)||(LA149_0>=XML_AT && LA149_0<=XML_LS_STD)||(LA149_0>=SINGLE_QUOTE_LITERAL && LA149_0<=DOUBLE_QUOTE_LITERAL)||LA149_0==REGULAR_EXPR_LITERAL||LA149_0==HEX_NUMBER_LITERAL||LA149_0==DEC_NUMBER_LITERAL||LA149_0==IDENTIFIER||(LA149_0>=XML_COMMENT && LA149_0<=XML_PI)) ) {
                alt149=1;
            }
            switch (alt149) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:0:0: elementList
                    {
                    pushFollow(FOLLOW_elementList_in_arrayLiteral6670);
                    elementList537=elementList();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) adaptor.addChild(root_0, elementList537.getTree());

                    }
                    break;

            }

            RBRACK538=(Token)match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral6673); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RBRACK538_tree = (Object)adaptor.create(RBRACK538);
            adaptor.addChild(root_0, RBRACK538_tree);
            }

            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "arrayLiteral"

    public static class elementList_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };

    // $ANTLR start "elementList"
    // com/shin1ogawa/as3/AS3.g:1652:1: elementList : assignmentExpression ( COMMA assignmentExpression )* ( COMMA )? ;
    public final AS3Parser.elementList_return elementList() throws RecognitionException {
        AS3Parser.elementList_return retval = new AS3Parser.elementList_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token COMMA540=null;
        Token COMMA542=null;
        AS3Parser.assignmentExpression_return assignmentExpression539 = null;

        AS3Parser.assignmentExpression_return assignmentExpression541 = null;


        Object COMMA540_tree=null;
        Object COMMA542_tree=null;

        try {
            // com/shin1ogawa/as3/AS3.g:1653:2: ( assignmentExpression ( COMMA assignmentExpression )* ( COMMA )? )
            // com/shin1ogawa/as3/AS3.g:1653:4: assignmentExpression ( COMMA assignmentExpression )* ( COMMA )?
            {
            root_0 = (Object)adaptor.nil();

            pushFollow(FOLLOW_assignmentExpression_in_elementList6685);
            assignmentExpression539=assignmentExpression();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression539.getTree());
            // com/shin1ogawa/as3/AS3.g:1653:25: ( COMMA assignmentExpression )*
            loop150:
            do {
                int alt150=2;
                int LA150_0 = input.LA(1);

                if ( (LA150_0==COMMA) ) {
                    int LA150_1 = input.LA(2);

                    if ( ((LA150_1>=AS && LA150_1<=STATIC)||LA150_1==LCURLY||LA150_1==LPAREN||LA150_1==LBRACK||LA150_1==LT||(LA150_1>=PLUS && LA150_1<=STAR)||(LA150_1>=INC && LA150_1<=DEC)||(LA150_1>=NOT && LA150_1<=INV)||(LA150_1>=XML_AT && LA150_1<=XML_LS_STD)||(LA150_1>=SINGLE_QUOTE_LITERAL && LA150_1<=DOUBLE_QUOTE_LITERAL)||LA150_1==REGULAR_EXPR_LITERAL||LA150_1==HEX_NUMBER_LITERAL||LA150_1==DEC_NUMBER_LITERAL||LA150_1==IDENTIFIER||(LA150_1>=XML_COMMENT && LA150_1<=XML_PI)) ) {
                        alt150=1;
                    }


                }


                switch (alt150) {
            	case 1 :
            	    // com/shin1ogawa/as3/AS3.g:1653:26: COMMA assignmentExpression
            	    {
            	    COMMA540=(Token)match(input,COMMA,FOLLOW_COMMA_in_elementList6688); if (state.failed) return retval;
            	    if ( state.backtracking==0 ) {
            	    COMMA540_tree = (Object)adaptor.create(COMMA540);
            	    adaptor.addChild(root_0, COMMA540_tree);
            	    }
            	    pushFollow(FOLLOW_assignmentExpression_in_elementList6690);
            	    assignmentExpression541=assignmentExpression();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression541.getTree());

            	    }
            	    break;

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

            // com/shin1ogawa/as3/AS3.g:1654:2: ( COMMA )?
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( (LA151_0==COMMA) ) {
                alt151=1;
            }
            switch (alt151) {
                case 1 :
                    // com/shin1ogawa/as3/AS3.g:1654:3: COMMA
                    {
                    COMMA542=(Token)match(input,COMMA,FOLLOW_COMMA_in_elementList6697); if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                    COMMA542_tree = (Object)adaptor.create(COMMA542);
                    adaptor.addChild(root_0, COMMA542_tree);
                    }

                    }
                    break;

            }


            }

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

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "elementList"

    // $ANTLR start synpred7_AS3
    public final void synpred7_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:817:32: ( SUB ( IDENTIFIER | allKeywords ) )
        // com/shin1ogawa/as3/AS3.g:817:32: SUB ( IDENTIFIER | allKeywords )
        {
        match(input,SUB,FOLLOW_SUB_in_synpred7_AS32599); if (state.failed) return ;
        // com/shin1ogawa/as3/AS3.g:817:36: ( IDENTIFIER | allKeywords )
        int alt152=2;
        int LA152_0 = input.LA(1);

        if ( (LA152_0==IDENTIFIER) ) {
            alt152=1;
        }
        else if ( ((LA152_0>=AS && LA152_0<=STATIC)) ) {
            alt152=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 152, 0, input);

            throw nvae;
        }
        switch (alt152) {
            case 1 :
                // com/shin1ogawa/as3/AS3.g:817:37: IDENTIFIER
                {
                match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred7_AS32602); if (state.failed) return ;

                }
                break;
            case 2 :
                // com/shin1ogawa/as3/AS3.g:817:50: allKeywords
                {
                pushFollow(FOLLOW_allKeywords_in_synpred7_AS32606);
                allKeywords();

                state._fsp--;
                if (state.failed) return ;

                }
                break;

        }


        }
    }
    // $ANTLR end synpred7_AS3

    // $ANTLR start synpred71_AS3
    public final void synpred71_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:861:5: ( XML_TEXT )
        // com/shin1ogawa/as3/AS3.g:861:5: XML_TEXT
        {
        match(input,XML_TEXT,FOLLOW_XML_TEXT_in_synpred71_AS32977); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred71_AS3

    // $ANTLR start synpred72_AS3
    public final void synpred72_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:861:16: ( xmlTextElement )
        // com/shin1ogawa/as3/AS3.g:861:16: xmlTextElement
        {
        pushFollow(FOLLOW_xmlTextElement_in_synpred72_AS32981);
        xmlTextElement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred72_AS3

    // $ANTLR start synpred76_AS3
    public final void synpred76_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:880:29: ( xmlQualifiedIdentifier )
        // com/shin1ogawa/as3/AS3.g:880:29: xmlQualifiedIdentifier
        {
        pushFollow(FOLLOW_xmlQualifiedIdentifier_in_synpred76_AS33021);
        xmlQualifiedIdentifier();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred76_AS3

    // $ANTLR start synpred77_AS3
    public final void synpred77_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:884:12: ( xmlPropertySelector )
        // com/shin1ogawa/as3/AS3.g:884:12: xmlPropertySelector
        {
        pushFollow(FOLLOW_xmlPropertySelector_in_synpred77_AS33039);
        xmlPropertySelector();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred77_AS3

    // $ANTLR start synpred78_AS3
    public final void synpred78_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:884:34: ( xmlQualifiedIdentifier )
        // com/shin1ogawa/as3/AS3.g:884:34: xmlQualifiedIdentifier
        {
        pushFollow(FOLLOW_xmlQualifiedIdentifier_in_synpred78_AS33043);
        xmlQualifiedIdentifier();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred78_AS3

    // $ANTLR start synpred100_AS3
    public final void synpred100_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:978:5: ( propertyDeclaration )
        // com/shin1ogawa/as3/AS3.g:978:5: propertyDeclaration
        {
        pushFollow(FOLLOW_propertyDeclaration_in_synpred100_AS33335);
        propertyDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred100_AS3

    // $ANTLR start synpred101_AS3
    public final void synpred101_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:978:27: ( functionDeclaration )
        // com/shin1ogawa/as3/AS3.g:978:27: functionDeclaration
        {
        pushFollow(FOLLOW_functionDeclaration_in_synpred101_AS33339);
        functionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred101_AS3

    // $ANTLR start synpred102_AS3
    public final void synpred102_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:978:49: ( statement )
        // com/shin1ogawa/as3/AS3.g:978:49: statement
        {
        pushFollow(FOLLOW_statement_in_synpred102_AS33343);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred102_AS3

    // $ANTLR start synpred103_AS3
    public final void synpred103_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:978:61: ( directive )
        // com/shin1ogawa/as3/AS3.g:978:61: directive
        {
        pushFollow(FOLLOW_directive_in_synpred103_AS33347);
        directive();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred103_AS3

    // $ANTLR start synpred104_AS3
    public final void synpred104_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:978:73: ( interfaceFunctionDeclaration )
        // com/shin1ogawa/as3/AS3.g:978:73: interfaceFunctionDeclaration
        {
        pushFollow(FOLLOW_interfaceFunctionDeclaration_in_synpred104_AS33351);
        interfaceFunctionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred104_AS3

    // $ANTLR start synpred106_AS3
    public final void synpred106_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:982:4: ( classDeclaration )
        // com/shin1ogawa/as3/AS3.g:982:4: classDeclaration
        {
        pushFollow(FOLLOW_classDeclaration_in_synpred106_AS33368);
        classDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred106_AS3

    // $ANTLR start synpred107_AS3
    public final void synpred107_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:982:23: ( interfaceDeclaration )
        // com/shin1ogawa/as3/AS3.g:982:23: interfaceDeclaration
        {
        pushFollow(FOLLOW_interfaceDeclaration_in_synpred107_AS33372);
        interfaceDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred107_AS3

    // $ANTLR start synpred108_AS3
    public final void synpred108_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:983:4: ( propertyDeclaration )
        // com/shin1ogawa/as3/AS3.g:983:4: propertyDeclaration
        {
        pushFollow(FOLLOW_propertyDeclaration_in_synpred108_AS33377);
        propertyDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred108_AS3

    // $ANTLR start synpred109_AS3
    public final void synpred109_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:984:4: ( functionDeclaration )
        // com/shin1ogawa/as3/AS3.g:984:4: functionDeclaration
        {
        pushFollow(FOLLOW_functionDeclaration_in_synpred109_AS33382);
        functionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred109_AS3

    // $ANTLR start synpred110_AS3
    public final void synpred110_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:985:4: ( interfaceFunctionDeclaration )
        // com/shin1ogawa/as3/AS3.g:985:4: interfaceFunctionDeclaration
        {
        pushFollow(FOLLOW_interfaceFunctionDeclaration_in_synpred110_AS33387);
        interfaceFunctionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred110_AS3

    // $ANTLR start synpred111_AS3
    public final void synpred111_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:986:4: ( statement )
        // com/shin1ogawa/as3/AS3.g:986:4: statement
        {
        pushFollow(FOLLOW_statement_in_synpred111_AS33392);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred111_AS3

    // $ANTLR start synpred120_AS3
    public final void synpred120_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1011:89: ( SEMI )
        // com/shin1ogawa/as3/AS3.g:1011:89: SEMI
        {
        match(input,SEMI,FOLLOW_SEMI_in_synpred120_AS33532); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred120_AS3

    // $ANTLR start synpred121_AS3
    public final void synpred121_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1015:26: ( semic )
        // com/shin1ogawa/as3/AS3.g:1015:26: semic
        {
        pushFollow(FOLLOW_semic_in_synpred121_AS33548);
        semic();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred121_AS3

    // $ANTLR start synpred122_AS3
    public final void synpred122_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1021:3: ( IDENTIFIER ASSIGN )
        // com/shin1ogawa/as3/AS3.g:1021:3: IDENTIFIER ASSIGN
        {
        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred122_AS33577); if (state.failed) return ;
        match(input,ASSIGN,FOLLOW_ASSIGN_in_synpred122_AS33579); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred122_AS3

    // $ANTLR start synpred130_AS3
    public final void synpred130_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1060:4: ( propertyDeclaration )
        // com/shin1ogawa/as3/AS3.g:1060:4: propertyDeclaration
        {
        pushFollow(FOLLOW_propertyDeclaration_in_synpred130_AS33759);
        propertyDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred130_AS3

    // $ANTLR start synpred131_AS3
    public final void synpred131_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1061:4: ( functionDeclaration )
        // com/shin1ogawa/as3/AS3.g:1061:4: functionDeclaration
        {
        pushFollow(FOLLOW_functionDeclaration_in_synpred131_AS33764);
        functionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred131_AS3

    // $ANTLR start synpred132_AS3
    public final void synpred132_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1062:4: ( interfaceFunctionDeclaration )
        // com/shin1ogawa/as3/AS3.g:1062:4: interfaceFunctionDeclaration
        {
        pushFollow(FOLLOW_interfaceFunctionDeclaration_in_synpred132_AS33769);
        interfaceFunctionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred132_AS3

    // $ANTLR start synpred133_AS3
    public final void synpred133_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1063:4: ( statement )
        // com/shin1ogawa/as3/AS3.g:1063:4: statement
        {
        pushFollow(FOLLOW_statement_in_synpred133_AS33775);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred133_AS3

    // $ANTLR start synpred134_AS3
    public final void synpred134_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1068:4: ( propertyDeclaration )
        // com/shin1ogawa/as3/AS3.g:1068:4: propertyDeclaration
        {
        pushFollow(FOLLOW_propertyDeclaration_in_synpred134_AS33792);
        propertyDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred134_AS3

    // $ANTLR start synpred135_AS3
    public final void synpred135_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1069:4: ( interfaceFunctionDeclaration )
        // com/shin1ogawa/as3/AS3.g:1069:4: interfaceFunctionDeclaration
        {
        pushFollow(FOLLOW_interfaceFunctionDeclaration_in_synpred135_AS33797);
        interfaceFunctionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred135_AS3

    // $ANTLR start synpred136_AS3
    public final void synpred136_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1070:4: ( statement )
        // com/shin1ogawa/as3/AS3.g:1070:4: statement
        {
        pushFollow(FOLLOW_statement_in_synpred136_AS33803);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred136_AS3

    // $ANTLR start synpred144_AS3
    public final void synpred144_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1091:4: ( memberModifiers )
        // com/shin1ogawa/as3/AS3.g:1091:4: memberModifiers
        {
        pushFollow(FOLLOW_memberModifiers_in_synpred144_AS33934);
        memberModifiers();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred144_AS3

    // $ANTLR start synpred161_AS3
    public final void synpred161_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1146:13: ( statement )
        // com/shin1ogawa/as3/AS3.g:1146:13: statement
        {
        pushFollow(FOLLOW_statement_in_synpred161_AS34226);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred161_AS3

    // $ANTLR start synpred162_AS3
    public final void synpred162_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1146:24: ( functionDeclaration )
        // com/shin1ogawa/as3/AS3.g:1146:24: functionDeclaration
        {
        pushFollow(FOLLOW_functionDeclaration_in_synpred162_AS34229);
        functionDeclaration();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred162_AS3

    // $ANTLR start synpred163_AS3
    public final void synpred163_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1152:4: ( memberModifier )
        // com/shin1ogawa/as3/AS3.g:1152:4: memberModifier
        {
        pushFollow(FOLLOW_memberModifier_in_synpred163_AS34247);
        memberModifier();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred163_AS3

    // $ANTLR start synpred173_AS3
    public final void synpred173_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1171:5: ( blockStatement )
        // com/shin1ogawa/as3/AS3.g:1171:5: blockStatement
        {
        pushFollow(FOLLOW_blockStatement_in_synpred173_AS34324);
        blockStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred173_AS3

    // $ANTLR start synpred174_AS3
    public final void synpred174_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1171:22: ( directive )
        // com/shin1ogawa/as3/AS3.g:1171:22: directive
        {
        pushFollow(FOLLOW_directive_in_synpred174_AS34328);
        directive();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred174_AS3

    // $ANTLR start synpred175_AS3
    public final void synpred175_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1171:34: ( namespaceDirective )
        // com/shin1ogawa/as3/AS3.g:1171:34: namespaceDirective
        {
        pushFollow(FOLLOW_namespaceDirective_in_synpred175_AS34332);
        namespaceDirective();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred175_AS3

    // $ANTLR start synpred176_AS3
    public final void synpred176_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1171:55: ( expression semic )
        // com/shin1ogawa/as3/AS3.g:1171:55: expression semic
        {
        pushFollow(FOLLOW_expression_in_synpred176_AS34336);
        expression();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_semic_in_synpred176_AS34338);
        semic();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred176_AS3

    // $ANTLR start synpred177_AS3
    public final void synpred177_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1172:4: ( constantVarStatement )
        // com/shin1ogawa/as3/AS3.g:1172:4: constantVarStatement
        {
        pushFollow(FOLLOW_constantVarStatement_in_synpred177_AS34344);
        constantVarStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred177_AS3

    // $ANTLR start synpred178_AS3
    public final void synpred178_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1172:27: ( tryStatement )
        // com/shin1ogawa/as3/AS3.g:1172:27: tryStatement
        {
        pushFollow(FOLLOW_tryStatement_in_synpred178_AS34348);
        tryStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred178_AS3

    // $ANTLR start synpred179_AS3
    public final void synpred179_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1172:42: ( labelledStatement )
        // com/shin1ogawa/as3/AS3.g:1172:42: labelledStatement
        {
        pushFollow(FOLLOW_labelledStatement_in_synpred179_AS34352);
        labelledStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred179_AS3

    // $ANTLR start synpred180_AS3
    public final void synpred180_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1172:62: ( switchStatement )
        // com/shin1ogawa/as3/AS3.g:1172:62: switchStatement
        {
        pushFollow(FOLLOW_switchStatement_in_synpred180_AS34356);
        switchStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred180_AS3

    // $ANTLR start synpred181_AS3
    public final void synpred181_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1173:4: ( withStatement )
        // com/shin1ogawa/as3/AS3.g:1173:4: withStatement
        {
        pushFollow(FOLLOW_withStatement_in_synpred181_AS34362);
        withStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred181_AS3

    // $ANTLR start synpred182_AS3
    public final void synpred182_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1173:20: ( returnStatement )
        // com/shin1ogawa/as3/AS3.g:1173:20: returnStatement
        {
        pushFollow(FOLLOW_returnStatement_in_synpred182_AS34366);
        returnStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred182_AS3

    // $ANTLR start synpred183_AS3
    public final void synpred183_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1173:38: ( breakStatement )
        // com/shin1ogawa/as3/AS3.g:1173:38: breakStatement
        {
        pushFollow(FOLLOW_breakStatement_in_synpred183_AS34370);
        breakStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred183_AS3

    // $ANTLR start synpred184_AS3
    public final void synpred184_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1173:55: ( continueStatement )
        // com/shin1ogawa/as3/AS3.g:1173:55: continueStatement
        {
        pushFollow(FOLLOW_continueStatement_in_synpred184_AS34374);
        continueStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred184_AS3

    // $ANTLR start synpred185_AS3
    public final void synpred185_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1174:4: ( forStatement )
        // com/shin1ogawa/as3/AS3.g:1174:4: forStatement
        {
        pushFollow(FOLLOW_forStatement_in_synpred185_AS34380);
        forStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred185_AS3

    // $ANTLR start synpred186_AS3
    public final void synpred186_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1174:19: ( forInStatement )
        // com/shin1ogawa/as3/AS3.g:1174:19: forInStatement
        {
        pushFollow(FOLLOW_forInStatement_in_synpred186_AS34384);
        forInStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred186_AS3

    // $ANTLR start synpred187_AS3
    public final void synpred187_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1174:36: ( forEachInStatement )
        // com/shin1ogawa/as3/AS3.g:1174:36: forEachInStatement
        {
        pushFollow(FOLLOW_forEachInStatement_in_synpred187_AS34388);
        forEachInStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred187_AS3

    // $ANTLR start synpred188_AS3
    public final void synpred188_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1174:57: ( doWhileStatement )
        // com/shin1ogawa/as3/AS3.g:1174:57: doWhileStatement
        {
        pushFollow(FOLLOW_doWhileStatement_in_synpred188_AS34392);
        doWhileStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred188_AS3

    // $ANTLR start synpred189_AS3
    public final void synpred189_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1175:4: ( whileStatement )
        // com/shin1ogawa/as3/AS3.g:1175:4: whileStatement
        {
        pushFollow(FOLLOW_whileStatement_in_synpred189_AS34398);
        whileStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred189_AS3

    // $ANTLR start synpred190_AS3
    public final void synpred190_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1175:21: ( ifStatement )
        // com/shin1ogawa/as3/AS3.g:1175:21: ifStatement
        {
        pushFollow(FOLLOW_ifStatement_in_synpred190_AS34402);
        ifStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred190_AS3

    // $ANTLR start synpred192_AS3
    public final void synpred192_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1175:52: ( variableStatement )
        // com/shin1ogawa/as3/AS3.g:1175:52: variableStatement
        {
        pushFollow(FOLLOW_variableStatement_in_synpred192_AS34410);
        variableStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred192_AS3

    // $ANTLR start synpred194_AS3
    public final void synpred194_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1193:35: ( SEMI )
        // com/shin1ogawa/as3/AS3.g:1193:35: SEMI
        {
        match(input,SEMI,FOLLOW_SEMI_in_synpred194_AS34469); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred194_AS3

    // $ANTLR start synpred198_AS3
    public final void synpred198_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1220:24: ( ( catchClause )+ finallyClause )
        // com/shin1ogawa/as3/AS3.g:1220:24: ( catchClause )+ finallyClause
        {
        // com/shin1ogawa/as3/AS3.g:1220:24: ( catchClause )+
        int cnt167=0;
        loop167:
        do {
            int alt167=2;
            int LA167_0 = input.LA(1);

            if ( (LA167_0==CATCH) ) {
                alt167=1;
            }


            switch (alt167) {
        	case 1 :
        	    // com/shin1ogawa/as3/AS3.g:0:0: catchClause
        	    {
        	    pushFollow(FOLLOW_catchClause_in_synpred198_AS34597);
        	    catchClause();

        	    state._fsp--;
        	    if (state.failed) return ;

        	    }
        	    break;

        	default :
        	    if ( cnt167 >= 1 ) break loop167;
        	    if (state.backtracking>0) {state.failed=true; return ;}
                    EarlyExitException eee =
                        new EarlyExitException(167, input);
                    throw eee;
            }
            cnt167++;
        } while (true);

        pushFollow(FOLLOW_finallyClause_in_synpred198_AS34600);
        finallyClause();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred198_AS3

    // $ANTLR start synpred200_AS3
    public final void synpred200_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1220:53: ( ( catchClause )+ )
        // com/shin1ogawa/as3/AS3.g:1220:53: ( catchClause )+
        {
        // com/shin1ogawa/as3/AS3.g:1220:53: ( catchClause )+
        int cnt168=0;
        loop168:
        do {
            int alt168=2;
            int LA168_0 = input.LA(1);

            if ( (LA168_0==CATCH) ) {
                alt168=1;
            }


            switch (alt168) {
        	case 1 :
        	    // com/shin1ogawa/as3/AS3.g:0:0: catchClause
        	    {
        	    pushFollow(FOLLOW_catchClause_in_synpred200_AS34604);
        	    catchClause();

        	    state._fsp--;
        	    if (state.failed) return ;

        	    }
        	    break;

        	default :
        	    if ( cnt168 >= 1 ) break loop168;
        	    if (state.backtracking>0) {state.failed=true; return ;}
                    EarlyExitException eee =
                        new EarlyExitException(168, input);
                    throw eee;
            }
            cnt168++;
        } while (true);


        }
    }
    // $ANTLR end synpred200_AS3

    // $ANTLR start synpred202_AS3
    public final void synpred202_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1248:16: ( statement )
        // com/shin1ogawa/as3/AS3.g:1248:16: statement
        {
        pushFollow(FOLLOW_statement_in_synpred202_AS34699);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred202_AS3

    // $ANTLR start synpred212_AS3
    public final void synpred212_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1307:11: ( variableDeclarationNoInList )
        // com/shin1ogawa/as3/AS3.g:1307:11: variableDeclarationNoInList
        {
        pushFollow(FOLLOW_variableDeclarationNoInList_in_synpred212_AS34948);
        variableDeclarationNoInList();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred212_AS3

    // $ANTLR start synpred213_AS3
    public final void synpred213_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1318:44: ( SEMI )
        // com/shin1ogawa/as3/AS3.g:1318:44: SEMI
        {
        match(input,SEMI,FOLLOW_SEMI_in_synpred213_AS34988); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred213_AS3

    // $ANTLR start synpred214_AS3
    public final void synpred214_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1330:47: ( ELSE statement )
        // com/shin1ogawa/as3/AS3.g:1330:47: ELSE statement
        {
        match(input,ELSE,FOLLOW_ELSE_in_synpred214_AS35034); if (state.failed) return ;
        pushFollow(FOLLOW_statement_in_synpred214_AS35036);
        statement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred214_AS3

    // $ANTLR start synpred227_AS3
    public final void synpred227_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1404:26: ( COMMA assignmentExpression )
        // com/shin1ogawa/as3/AS3.g:1404:26: COMMA assignmentExpression
        {
        match(input,COMMA,FOLLOW_COMMA_in_synpred227_AS35367); if (state.failed) return ;
        pushFollow(FOLLOW_assignmentExpression_in_synpred227_AS35369);
        assignmentExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred227_AS3

    // $ANTLR start synpred229_AS3
    public final void synpred229_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1413:4: ( leftHandSideExpression assignmentOperator assignmentExpression )
        // com/shin1ogawa/as3/AS3.g:1413:4: leftHandSideExpression assignmentOperator assignmentExpression
        {
        pushFollow(FOLLOW_leftHandSideExpression_in_synpred229_AS35401);
        leftHandSideExpression();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_assignmentOperator_in_synpred229_AS35403);
        assignmentOperator();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_assignmentExpression_in_synpred229_AS35405);
        assignmentExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred229_AS3

    // $ANTLR start synpred230_AS3
    public final void synpred230_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1417:4: ( conditionalExpressionNoIn )
        // com/shin1ogawa/as3/AS3.g:1417:4: conditionalExpressionNoIn
        {
        pushFollow(FOLLOW_conditionalExpressionNoIn_in_synpred230_AS35420);
        conditionalExpressionNoIn();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred230_AS3

    // $ANTLR start synpred269_AS3
    public final void synpred269_AS3_fragment() throws RecognitionException {   
        Token g=null;
        Token assign=null;

        // com/shin1ogawa/as3/AS3.g:1492:3: ( (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )
        // com/shin1ogawa/as3/AS3.g:1492:3: (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression
        {
        // com/shin1ogawa/as3/AS3.g:1492:3: (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) )
        int alt171=2;
        int LA171_0 = input.LA(1);

        if ( (LA171_0==GT) ) {
            alt171=1;
        }
        else if ( (LA171_0==AS||(LA171_0>=IN && LA171_0<=INSTANCEOF)||LA171_0==IS||LA171_0==LT||LA171_0==LTE) ) {
            alt171=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 171, 0, input);

            throw nvae;
        }
        switch (alt171) {
            case 1 :
                // com/shin1ogawa/as3/AS3.g:1492:4: g= GT (assign= ASSIGN )?
                {
                g=(Token)match(input,GT,FOLLOW_GT_in_synpred269_AS35797); if (state.failed) return ;
                // com/shin1ogawa/as3/AS3.g:1492:9: (assign= ASSIGN )?
                int alt170=2;
                int LA170_0 = input.LA(1);

                if ( (LA170_0==ASSIGN) ) {
                    alt170=1;
                }
                switch (alt170) {
                    case 1 :
                        // com/shin1ogawa/as3/AS3.g:1492:10: assign= ASSIGN
                        {
                        assign=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_synpred269_AS35802); if (state.failed) return ;

                        }
                        break;

                }


                }
                break;
            case 2 :
                // com/shin1ogawa/as3/AS3.g:1498:6: ( IN | LT | LTE | INSTANCEOF | IS | AS )
                {
                if ( input.LA(1)==AS||(input.LA(1)>=IN && input.LA(1)<=INSTANCEOF)||input.LA(1)==IS||input.LA(1)==LT||input.LA(1)==LTE ) {
                    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;
                }


                }
                break;

        }

        pushFollow(FOLLOW_shiftExpression_in_synpred269_AS35826);
        shiftExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred269_AS3

    // $ANTLR start synpred281_AS3
    public final void synpred281_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1521:30: ( ( PLUS | SUB ) multiplicativeExpression )
        // com/shin1ogawa/as3/AS3.g:1521:30: ( PLUS | SUB ) multiplicativeExpression
        {
        if ( (input.LA(1)>=PLUS && input.LA(1)<=SUB) ) {
            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;
        }

        pushFollow(FOLLOW_multiplicativeExpression_in_synpred281_AS35926);
        multiplicativeExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred281_AS3

    // $ANTLR start synpred284_AS3
    public final void synpred284_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1526:21: ( ( STAR | DIV | MOD ) unaryExpression )
        // com/shin1ogawa/as3/AS3.g:1526:21: ( STAR | DIV | MOD ) unaryExpression
        {
        if ( (input.LA(1)>=STAR && input.LA(1)<=MOD) ) {
            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;
        }

        pushFollow(FOLLOW_unaryExpression_in_synpred284_AS35950);
        unaryExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred284_AS3

    // $ANTLR start synpred294_AS3
    public final void synpred294_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1539:27: ( postfixOp )
        // com/shin1ogawa/as3/AS3.g:1539:27: postfixOp
        {
        pushFollow(FOLLOW_postfixOp_in_synpred294_AS36028);
        postfixOp();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred294_AS3

    // $ANTLR start synpred298_AS3
    public final void synpred298_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1557:22: ( arguments )
        // com/shin1ogawa/as3/AS3.g:1557:22: arguments
        {
        pushFollow(FOLLOW_arguments_in_synpred298_AS36094);
        arguments();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred298_AS3

    // $ANTLR start synpred299_AS3
    public final void synpred299_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1558:5: ( LBRACK expression RBRACK )
        // com/shin1ogawa/as3/AS3.g:1558:5: LBRACK expression RBRACK
        {
        match(input,LBRACK,FOLLOW_LBRACK_in_synpred299_AS36100); if (state.failed) return ;
        pushFollow(FOLLOW_expression_in_synpred299_AS36102);
        expression();

        state._fsp--;
        if (state.failed) return ;
        match(input,RBRACK,FOLLOW_RBRACK_in_synpred299_AS36104); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred299_AS3

    // $ANTLR start synpred300_AS3
    public final void synpred300_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1560:10: ( eitherIdentifier XML_NS_OP )
        // com/shin1ogawa/as3/AS3.g:1560:10: eitherIdentifier XML_NS_OP
        {
        pushFollow(FOLLOW_eitherIdentifier_in_synpred300_AS36115);
        eitherIdentifier();

        state._fsp--;
        if (state.failed) return ;
        match(input,XML_NS_OP,FOLLOW_XML_NS_OP_in_synpred300_AS36117); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred300_AS3

    // $ANTLR start synpred301_AS3
    public final void synpred301_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1560:5: ( DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier )
        // com/shin1ogawa/as3/AS3.g:1560:5: DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier
        {
        match(input,DOT,FOLLOW_DOT_in_synpred301_AS36112); if (state.failed) return ;
        // com/shin1ogawa/as3/AS3.g:1560:9: ( eitherIdentifier XML_NS_OP )?
        int alt175=2;
        switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                int LA175_1 = input.LA(2);

                if ( (synpred300_AS3()) ) {
                    alt175=1;
                }
                }
                break;
            case XML_AT:
                {
                int LA175_2 = input.LA(2);

                if ( (synpred300_AS3()) ) {
                    alt175=1;
                }
                }
                break;
            case AS:
            case BREAK:
            case CASE:
            case CATCH:
            case CLASS:
            case CONST:
            case CONTINUE:
            case DEFAULT:
            case DELETE:
            case DO:
            case ELSE:
            case EXTENDS:
            case FALSE:
            case FINALLY:
            case FOR:
            case FUNCTION:
            case IF:
            case IMPLEMENTS:
            case IMPORT:
            case IN:
            case INSTANCEOF:
            case INTERFACE:
            case INTERNAL:
            case IS:
            case NEW:
            case NULL:
            case PACKAGE:
            case PRIVATE:
            case PROTECTED:
            case PUBLIC:
            case RETURN:
            case SUPER:
            case SWITCH:
            case THIS:
            case THROW:
            case TRUE:
            case TRY:
            case TYPEOF:
            case USE:
            case VAR:
            case VOID:
            case WHILE:
            case WITH:
            case INCLUDE:
                {
                int LA175_3 = input.LA(2);

                if ( (synpred300_AS3()) ) {
                    alt175=1;
                }
                }
                break;
            case NATIVE:
            case TO:
            case EACH:
            case GET:
            case SET:
            case NAMESPACE:
            case DYNAMIC:
            case FINAL:
            case OVERRIDE:
            case STATIC:
                {
                int LA175_4 = input.LA(2);

                if ( (synpred300_AS3()) ) {
                    alt175=1;
                }
                }
                break;
            case STAR:
                {
                int LA175_5 = input.LA(2);

                if ( (synpred300_AS3()) ) {
                    alt175=1;
                }
                }
                break;
        }

        switch (alt175) {
            case 1 :
                // com/shin1ogawa/as3/AS3.g:1560:10: eitherIdentifier XML_NS_OP
                {
                pushFollow(FOLLOW_eitherIdentifier_in_synpred301_AS36115);
                eitherIdentifier();

                state._fsp--;
                if (state.failed) return ;
                match(input,XML_NS_OP,FOLLOW_XML_NS_OP_in_synpred301_AS36117); if (state.failed) return ;

                }
                break;

        }

        pushFollow(FOLLOW_eitherIdentifier_in_synpred301_AS36121);
        eitherIdentifier();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred301_AS3

    // $ANTLR start synpred303_AS3
    public final void synpred303_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1562:5: ( DOT parExpression )
        // com/shin1ogawa/as3/AS3.g:1562:5: DOT parExpression
        {
        match(input,DOT,FOLLOW_DOT_in_synpred303_AS36135); if (state.failed) return ;
        pushFollow(FOLLOW_parExpression_in_synpred303_AS36137);
        parExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred303_AS3

    // $ANTLR start synpred304_AS3
    public final void synpred304_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1563:5: ( typePostfixSyntax )
        // com/shin1ogawa/as3/AS3.g:1563:5: typePostfixSyntax
        {
        pushFollow(FOLLOW_typePostfixSyntax_in_synpred304_AS36143);
        typePostfixSyntax();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred304_AS3

    // $ANTLR start synpred305_AS3
    public final void synpred305_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1568:4: ( IDENTIFIER )
        // com/shin1ogawa/as3/AS3.g:1568:4: IDENTIFIER
        {
        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred305_AS36159); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred305_AS3

    // $ANTLR start synpred306_AS3
    public final void synpred306_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1568:17: ( xmlPropertyIdentifier )
        // com/shin1ogawa/as3/AS3.g:1568:17: xmlPropertyIdentifier
        {
        pushFollow(FOLLOW_xmlPropertyIdentifier_in_synpred306_AS36163);
        xmlPropertyIdentifier();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred306_AS3

    // $ANTLR start synpred365_AS3
    public final void synpred365_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1623:4: ( THIS )
        // com/shin1ogawa/as3/AS3.g:1623:4: THIS
        {
        match(input,THIS,FOLLOW_THIS_in_synpred365_AS36549); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred365_AS3

    // $ANTLR start synpred366_AS3
    public final void synpred366_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1623:11: ( SUPER )
        // com/shin1ogawa/as3/AS3.g:1623:11: SUPER
        {
        match(input,SUPER,FOLLOW_SUPER_in_synpred366_AS36553); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred366_AS3

    // $ANTLR start synpred367_AS3
    public final void synpred367_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1623:19: ( literal )
        // com/shin1ogawa/as3/AS3.g:1623:19: literal
        {
        pushFollow(FOLLOW_literal_in_synpred367_AS36557);
        literal();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred367_AS3

    // $ANTLR start synpred370_AS3
    public final void synpred370_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1625:4: ( identifierLiteral )
        // com/shin1ogawa/as3/AS3.g:1625:4: identifierLiteral
        {
        pushFollow(FOLLOW_identifierLiteral_in_synpred370_AS36573);
        identifierLiteral();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred370_AS3

    // $ANTLR start synpred371_AS3
    public final void synpred371_AS3_fragment() throws RecognitionException {   
        // com/shin1ogawa/as3/AS3.g:1626:4: ( xmlPrimaryExpression )
        // com/shin1ogawa/as3/AS3.g:1626:4: xmlPrimaryExpression
        {
        pushFollow(FOLLOW_xmlPrimaryExpression_in_synpred371_AS36579);
        xmlPrimaryExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred371_AS3

    // Delegated rules

    public final boolean synpred162_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred162_AS3_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 synpred178_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred178_AS3_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 synpred101_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred101_AS3_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 synpred184_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred184_AS3_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 synpred136_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred136_AS3_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 synpred214_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred214_AS3_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 synpred100_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred100_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred186_AS3_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 synpred161_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred161_AS3_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 synpred284_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred284_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred212_AS3_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 synpred110_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred110_AS3_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 synpred134_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred134_AS3_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 synpred132_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred132_AS3_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 synpred298_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred298_AS3_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 synpred230_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred230_AS3_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 synpred194_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred194_AS3_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 synpred133_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred133_AS3_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 synpred370_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred370_AS3_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 synpred130_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred130_AS3_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 synpred306_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred306_AS3_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 synpred109_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred109_AS3_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 synpred181_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred181_AS3_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 synpred190_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred190_AS3_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 synpred299_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred299_AS3_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 synpred175_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred175_AS3_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 synpred294_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred294_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred202_AS3_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 synpred108_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred108_AS3_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 synpred111_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred111_AS3_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 synpred71_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred71_AS3_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 synpred200_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred200_AS3_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 synpred180_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred180_AS3_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 synpred366_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred366_AS3_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 synpred72_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred72_AS3_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 synpred365_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred365_AS3_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 synpred281_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred281_AS3_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 synpred213_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred213_AS3_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 synpred7_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred7_AS3_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 synpred305_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred305_AS3_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 synpred179_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred179_AS3_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 synpred227_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred227_AS3_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 synpred102_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred102_AS3_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 synpred301_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred301_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred183_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred182_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred144_AS3_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 synpred103_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred103_AS3_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 synpred185_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred185_AS3_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 synpred104_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred104_AS3_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 synpred300_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred300_AS3_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 synpred189_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred189_AS3_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 synpred198_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred198_AS3_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 synpred177_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred177_AS3_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 synpred367_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred367_AS3_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 synpred76_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred76_AS3_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 synpred192_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred192_AS3_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 synpred371_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred371_AS3_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 synpred163_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred163_AS3_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 synpred78_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred78_AS3_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 synpred303_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred303_AS3_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 synpred77_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred77_AS3_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 synpred174_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred174_AS3_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 synpred120_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred120_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred187_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred188_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred121_AS3_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 synpred131_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred131_AS3_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 synpred176_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred176_AS3_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 synpred229_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred229_AS3_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 synpred107_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred107_AS3_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 synpred173_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred173_AS3_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 synpred304_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred304_AS3_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 synpred269_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred269_AS3_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_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred122_AS3_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 synpred135_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred135_AS3_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 synpred106_AS3() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred106_AS3_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 DFA4 dfa4 = new DFA4(this);
    protected DFA10 dfa10 = new DFA10(this);
    protected DFA30 dfa30 = new DFA30(this);
    protected DFA32 dfa32 = new DFA32(this);
    protected DFA40 dfa40 = new DFA40(this);
    protected DFA48 dfa48 = new DFA48(this);
    protected DFA49 dfa49 = new DFA49(this);
    protected DFA56 dfa56 = new DFA56(this);
    protected DFA65 dfa65 = new DFA65(this);
    protected DFA72 dfa72 = new DFA72(this);
    protected DFA74 dfa74 = new DFA74(this);
    protected DFA83 dfa83 = new DFA83(this);
    protected DFA109 dfa109 = new DFA109(this);
    protected DFA110 dfa110 = new DFA110(this);
    protected DFA127 dfa127 = new DFA127(this);
    protected DFA132 dfa132 = new DFA132(this);
    protected DFA133 dfa133 = new DFA133(this);
    protected DFA135 dfa135 = new DFA135(this);
    protected DFA138 dfa138 = new DFA138(this);
    protected DFA145 dfa145 = new DFA145(this);
    static final String DFA4_eotS =
        "\16\uffff";
    static final String DFA4_eofS =
        "\1\1\15\uffff";
    static final String DFA4_minS =
        "\1\4\1\uffff\1\4\12\0\1\uffff";
    static final String DFA4_maxS =
        "\1\u0091\1\uffff\1\u0091\12\0\1\uffff";
    static final String DFA4_acceptS =
        "\1\uffff\1\2\13\uffff\1\1";
    static final String DFA4_specialS =
        "\3\uffff\1\6\1\2\1\10\1\11\1\0\1\3\1\7\1\4\1\1\1\5\1\uffff}>";
    static final String[] DFA4_transitionS = {
            "\102\1\1\uffff\5\1\1\2\22\1\2\uffff\13\1\1\uffff\2\1\1\uffff"+
            "\3\1\14\uffff\2\1\2\uffff\1\1\4\uffff\1\1\2\uffff\1\1\1\uffff"+
            "\1\1\1\uffff\3\1",
            "",
            "\10\14\1\13\3\14\1\6\2\14\1\11\10\14\1\10\1\12\1\5\5\14\1\4"+
            "\1\14\1\3\1\14\1\10\1\6\1\14\1\13\2\14\1\13\2\14\4\10\1\14\4"+
            "\10\1\uffff\1\1\1\uffff\1\1\1\uffff\1\1\3\uffff\1\1\7\uffff"+
            "\3\1\2\uffff\2\1\6\uffff\2\1\27\uffff\2\1\14\uffff\2\1\2\uffff"+
            "\1\1\4\uffff\1\1\2\uffff\1\1\1\uffff\1\7\1\uffff\3\1",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            ""
    };

    static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
    static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
    static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
    static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
    static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
    static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
    static final short[][] DFA4_transition;

    static {
        int numStates = DFA4_transitionS.length;
        DFA4_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
        }
    }

    class DFA4 extends DFA {

        public DFA4(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 4;
            this.eot = DFA4_eot;
            this.eof = DFA4_eof;
            this.min = DFA4_min;
            this.max = DFA4_max;
            this.accept = DFA4_accept;
            this.special = DFA4_special;
            this.transition = DFA4_transition;
        }
        public String getDescription() {
            return "()* loopback of 817:31: ( SUB ( IDENTIFIER | allKeywords ) )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA4_7 = input.LA(1);

                         
                        int index4_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_7);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA4_11 = input.LA(1);

                         
                        int index4_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_11);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA4_4 = input.LA(1);

                         
                        int index4_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_4);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA4_8 = input.LA(1);

                         
                        int index4_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_8);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA4_10 = input.LA(1);

                         
                        int index4_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_10);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA4_12 = input.LA(1);

                         
                        int index4_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_12);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA4_3 = input.LA(1);

                         
                        int index4_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_3);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA4_9 = input.LA(1);

                         
                        int index4_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_9);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA4_5 = input.LA(1);

                         
                        int index4_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_5);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA4_6 = input.LA(1);

                         
                        int index4_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_AS3()) ) {s = 13;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index4_6);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 4, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA10_eotS =
        "\12\uffff";
    static final String DFA10_eofS =
        "\3\uffff\1\4\1\uffff\1\4\4\uffff";
    static final String DFA10_minS =
        "\1\4\2\uffff\1\4\1\uffff\1\4\4\0";
    static final String DFA10_maxS =
        "\1\u008d\2\uffff\1\u0091\1\uffff\1\u008d\4\0";
    static final String DFA10_acceptS =
        "\1\uffff\1\1\1\2\1\uffff\1\3\5\uffff";
    static final String DFA10_specialS =
        "\6\uffff\1\2\1\3\1\0\1\1}>";
    static final String[] DFA10_transitionS = {
            "\66\2\23\uffff\1\3\43\uffff\1\1\33\uffff\1\2",
            "",
            "",
            "\102\4\1\uffff\30\4\2\uffff\13\4\1\uffff\1\4\2\uffff\1\5\2"+
            "\4\14\uffff\2\4\2\uffff\1\4\4\uffff\1\4\2\uffff\1\4\1\uffff"+
            "\1\4\1\uffff\3\4",
            "",
            "\30\7\1\10\13\7\1\10\10\7\4\10\1\7\4\10\5\uffff\1\2\15\uffff"+
            "\1\11\43\uffff\1\4\33\uffff\1\6",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff"
    };

    static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
    static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
    static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
    static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
    static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
    static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
    static final short[][] DFA10_transition;

    static {
        int numStates = DFA10_transitionS.length;
        DFA10_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
        }
    }

    class DFA10 extends DFA {

        public DFA10(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 10;
            this.eot = DFA10_eot;
            this.eof = DFA10_eof;
            this.min = DFA10_min;
            this.max = DFA10_max;
            this.accept = DFA10_accept;
            this.special = DFA10_special;
            this.transition = DFA10_transition;
        }
        public String getDescription() {
            return "879:1: xmlPropertyIdentifier : ( xmlAttributeIdentifier | xmlQualifiedIdentifier | STAR );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA10_8 = input.LA(1);

                         
                        int index10_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred76_AS3()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index10_8);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA10_9 = input.LA(1);

                         
                        int index10_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred76_AS3()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index10_9);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA10_6 = input.LA(1);

                         
                        int index10_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred76_AS3()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index10_6);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA10_7 = input.LA(1);

                         
                        int index10_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred76_AS3()) ) {s = 2;}

                        else if ( (true) ) {s = 4;}

                         
                        input.seek(index10_7);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 10, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA30_eotS =
        "\63\uffff";
    static final String DFA30_eofS =
        "\1\1\62\uffff";
    static final String DFA30_minS =
        "\1\4\1\uffff\6\0\1\uffff\5\0\7\uffff\1\0\35\uffff";
    static final String DFA30_maxS =
        "\1\u0091\1\uffff\6\0\1\uffff\5\0\7\uffff\1\0\35\uffff";
    static final String DFA30_acceptS =
        "\1\uffff\1\6\6\uffff\1\3\46\uffff\1\1\1\2\1\5\1\4";
    static final String DFA30_specialS =
        "\2\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\uffff\1\6\1\7\1\10\1\11\1\12"+
        "\7\uffff\1\13\35\uffff}>";
    static final String[] DFA30_transitionS = {
            "\5\10\1\5\1\10\1\15\7\10\1\7\2\10\1\14\3\10\1\25\1\10\1\3\3"+
            "\10\3\25\11\10\1\13\1\4\6\10\1\6\1\12\4\3\2\10\1\uffff\1\10"+
            "\1\uffff\1\11\3\uffff\1\10\7\uffff\3\10\2\uffff\2\10\6\uffff"+
            "\2\10\27\uffff\2\10\14\uffff\2\10\2\uffff\1\10\4\uffff\1\10"+
            "\2\uffff\1\10\1\uffff\1\2\1\uffff\3\10",
            "",
            "\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[] DFA30_eot = DFA.unpackEncodedString(DFA30_eotS);
    static final short[] DFA30_eof = DFA.unpackEncodedString(DFA30_eofS);
    static final char[] DFA30_min = DFA.unpackEncodedStringToUnsignedChars(DFA30_minS);
    static final char[] DFA30_max = DFA.unpackEncodedStringToUnsignedChars(DFA30_maxS);
    static final short[] DFA30_accept = DFA.unpackEncodedString(DFA30_acceptS);
    static final short[] DFA30_special = DFA.unpackEncodedString(DFA30_specialS);
    static final short[][] DFA30_transition;

    static {
        int numStates = DFA30_transitionS.length;
        DFA30_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA30_transition[i] = DFA.unpackEncodedString(DFA30_transitionS[i]);
        }
    }

    class DFA30 extends DFA {

        public DFA30(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 30;
            this.eot = DFA30_eot;
            this.eof = DFA30_eof;
            this.min = DFA30_min;
            this.max = DFA30_max;
            this.accept = DFA30_accept;
            this.special = DFA30_special;
            this.transition = DFA30_transition;
        }
        public String getDescription() {
            return "()* loopback of 978:4: ( propertyDeclaration | functionDeclaration | statement | directive | interfaceFunctionDeclaration )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA30_2 = input.LA(1);

                         
                        int index30_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred100_AS3()) ) {s = 47;}

                        else if ( (synpred101_AS3()) ) {s = 48;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred104_AS3()) ) {s = 49;}

                         
                        input.seek(index30_2);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA30_3 = input.LA(1);

                         
                        int index30_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred100_AS3()) ) {s = 47;}

                        else if ( (synpred101_AS3()) ) {s = 48;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred104_AS3()) ) {s = 49;}

                         
                        input.seek(index30_3);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA30_4 = input.LA(1);

                         
                        int index30_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred100_AS3()) ) {s = 47;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                         
                        input.seek(index30_4);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA30_5 = input.LA(1);

                         
                        int index30_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred100_AS3()) ) {s = 47;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                         
                        input.seek(index30_5);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA30_6 = input.LA(1);

                         
                        int index30_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred100_AS3()) ) {s = 47;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                         
                        input.seek(index30_6);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA30_7 = input.LA(1);

                         
                        int index30_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred101_AS3()) ) {s = 48;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred104_AS3()) ) {s = 49;}

                         
                        input.seek(index30_7);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA30_9 = input.LA(1);

                         
                        int index30_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred103_AS3()) ) {s = 50;}

                         
                        input.seek(index30_9);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA30_10 = input.LA(1);

                         
                        int index30_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred103_AS3()) ) {s = 50;}

                         
                        input.seek(index30_10);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA30_11 = input.LA(1);

                         
                        int index30_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred103_AS3()) ) {s = 50;}

                         
                        input.seek(index30_11);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA30_12 = input.LA(1);

                         
                        int index30_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred103_AS3()) ) {s = 50;}

                         
                        input.seek(index30_12);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA30_13 = input.LA(1);

                         
                        int index30_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred103_AS3()) ) {s = 50;}

                         
                        input.seek(index30_13);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA30_21 = input.LA(1);

                         
                        int index30_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred100_AS3()) ) {s = 47;}

                        else if ( (synpred101_AS3()) ) {s = 48;}

                        else if ( (synpred102_AS3()) ) {s = 8;}

                        else if ( (synpred104_AS3()) ) {s = 49;}

                         
                        input.seek(index30_21);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 30, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA32_eotS =
        "\66\uffff";
    static final String DFA32_eofS =
        "\66\uffff";
    static final String DFA32_minS =
        "\1\4\10\0\1\uffff\5\0\7\uffff\1\0\37\uffff";
    static final String DFA32_maxS =
        "\1\u0091\10\0\1\uffff\5\0\7\uffff\1\0\37\uffff";
    static final String DFA32_acceptS =
        "\11\uffff\1\6\46\uffff\1\1\1\2\1\3\1\4\1\5\1\7";
    static final String DFA32_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\uffff\1\10\1\11\1\12"+
        "\1\13\1\14\7\uffff\1\15\37\uffff}>";
    static final String[] DFA32_transitionS = {
            "\4\11\1\2\1\6\1\11\1\16\7\11\1\10\2\11\1\15\2\11\1\3\1\26\1"+
            "\11\1\4\3\11\3\26\11\11\1\14\1\5\6\11\1\7\1\13\4\4\2\11\1\uffff"+
            "\1\11\1\uffff\1\12\3\uffff\1\11\7\uffff\3\11\2\uffff\2\11\6"+
            "\uffff\2\11\27\uffff\2\11\14\uffff\2\11\2\uffff\1\11\4\uffff"+
            "\1\11\2\uffff\1\11\1\uffff\1\1\1\uffff\3\11",
            "\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[] 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 "981:1: packageElement : ( classDeclaration | interfaceDeclaration | propertyDeclaration | functionDeclaration | interfaceFunctionDeclaration | statement | directive );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA32_1 = input.LA(1);

                         
                        int index32_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred106_AS3()) ) {s = 48;}

                        else if ( (synpred107_AS3()) ) {s = 49;}

                        else if ( (synpred108_AS3()) ) {s = 50;}

                        else if ( (synpred109_AS3()) ) {s = 51;}

                        else if ( (synpred110_AS3()) ) {s = 52;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA32_2 = input.LA(1);

                         
                        int index32_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred106_AS3()) ) {s = 48;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA32_3 = input.LA(1);

                         
                        int index32_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred107_AS3()) ) {s = 49;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA32_4 = input.LA(1);

                         
                        int index32_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred106_AS3()) ) {s = 48;}

                        else if ( (synpred107_AS3()) ) {s = 49;}

                        else if ( (synpred108_AS3()) ) {s = 50;}

                        else if ( (synpred109_AS3()) ) {s = 51;}

                        else if ( (synpred110_AS3()) ) {s = 52;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA32_5 = input.LA(1);

                         
                        int index32_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred108_AS3()) ) {s = 50;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA32_6 = input.LA(1);

                         
                        int index32_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred108_AS3()) ) {s = 50;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA32_7 = input.LA(1);

                         
                        int index32_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred108_AS3()) ) {s = 50;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA32_8 = input.LA(1);

                         
                        int index32_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred109_AS3()) ) {s = 51;}

                        else if ( (synpred110_AS3()) ) {s = 52;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA32_10 = input.LA(1);

                         
                        int index32_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred111_AS3()) ) {s = 9;}

                        else if ( (true) ) {s = 53;}

                         
                        input.seek(index32_10);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA32_11 = input.LA(1);

                         
                        int index32_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred111_AS3()) ) {s = 9;}

                        else if ( (true) ) {s = 53;}

                         
                        input.seek(index32_11);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA32_12 = input.LA(1);

                         
                        int index32_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred111_AS3()) ) {s = 9;}

                        else if ( (true) ) {s = 53;}

                         
                        input.seek(index32_12);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA32_13 = input.LA(1);

                         
                        int index32_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred111_AS3()) ) {s = 9;}

                        else if ( (true) ) {s = 53;}

                         
                        input.seek(index32_13);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA32_14 = input.LA(1);

                         
                        int index32_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred111_AS3()) ) {s = 9;}

                        else if ( (true) ) {s = 53;}

                         
                        input.seek(index32_14);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA32_22 = input.LA(1);

                         
                        int index32_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred106_AS3()) ) {s = 48;}

                        else if ( (synpred107_AS3()) ) {s = 49;}

                        else if ( (synpred108_AS3()) ) {s = 50;}

                        else if ( (synpred109_AS3()) ) {s = 51;}

                        else if ( (synpred110_AS3()) ) {s = 52;}

                        else if ( (synpred111_AS3()) ) {s = 9;}

                         
                        input.seek(index32_22);
                        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 DFA40_eotS =
        "\32\uffff";
    static final String DFA40_eofS =
        "\32\uffff";
    static final String DFA40_minS =
        "\1\4\1\0\30\uffff";
    static final String DFA40_maxS =
        "\1\u0091\1\0\30\uffff";
    static final String DFA40_acceptS =
        "\2\uffff\1\2\26\uffff\1\1";
    static final String DFA40_specialS =
        "\1\uffff\1\0\30\uffff}>";
    static final String[] DFA40_transitionS = {
            "\66\2\1\uffff\1\2\1\uffff\1\2\1\uffff\1\2\3\uffff\1\2\7\uffff"+
            "\3\2\2\uffff\2\2\6\uffff\2\2\27\uffff\2\2\14\uffff\2\2\2\uffff"+
            "\1\2\4\uffff\1\2\2\uffff\1\2\1\uffff\1\1\1\uffff\3\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
    static final short[][] DFA40_transition;

    static {
        int numStates = DFA40_transitionS.length;
        DFA40_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
        }
    }

    class DFA40 extends DFA {

        public DFA40(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 40;
            this.eot = DFA40_eot;
            this.eof = DFA40_eof;
            this.min = DFA40_min;
            this.max = DFA40_max;
            this.accept = DFA40_accept;
            this.special = DFA40_special;
            this.transition = DFA40_transition;
        }
        public String getDescription() {
            return "1021:2: ( IDENTIFIER ASSIGN )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA40_1 = input.LA(1);

                         
                        int index40_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred122_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index40_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 40, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA48_eotS =
        "\62\uffff";
    static final String DFA48_eofS =
        "\62\uffff";
    static final String DFA48_minS =
        "\1\4\6\0\1\uffff\5\0\7\uffff\1\0\35\uffff";
    static final String DFA48_maxS =
        "\1\u0091\6\0\1\uffff\5\0\7\uffff\1\0\35\uffff";
    static final String DFA48_acceptS =
        "\7\uffff\1\4\46\uffff\1\1\1\2\1\3\1\5";
    static final String DFA48_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\uffff\1\6\1\7\1\10\1\11\1\12"+
        "\7\uffff\1\13\35\uffff}>";
    static final String[] DFA48_transitionS = {
            "\5\7\1\4\1\7\1\14\7\7\1\6\2\7\1\13\3\7\1\24\1\7\1\2\3\7\3\24"+
            "\11\7\1\12\1\3\6\7\1\5\1\11\4\2\2\7\1\uffff\1\7\1\uffff\1\10"+
            "\3\uffff\1\7\7\uffff\3\7\2\uffff\2\7\6\uffff\2\7\27\uffff\2"+
            "\7\14\uffff\2\7\2\uffff\1\7\4\uffff\1\7\2\uffff\1\7\1\uffff"+
            "\1\1\1\uffff\3\7",
            "\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[] DFA48_eot = DFA.unpackEncodedString(DFA48_eotS);
    static final short[] DFA48_eof = DFA.unpackEncodedString(DFA48_eofS);
    static final char[] DFA48_min = DFA.unpackEncodedStringToUnsignedChars(DFA48_minS);
    static final char[] DFA48_max = DFA.unpackEncodedStringToUnsignedChars(DFA48_maxS);
    static final short[] DFA48_accept = DFA.unpackEncodedString(DFA48_acceptS);
    static final short[] DFA48_special = DFA.unpackEncodedString(DFA48_specialS);
    static final short[][] DFA48_transition;

    static {
        int numStates = DFA48_transitionS.length;
        DFA48_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA48_transition[i] = DFA.unpackEncodedString(DFA48_transitionS[i]);
        }
    }

    class DFA48 extends DFA {

        public DFA48(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 48;
            this.eot = DFA48_eot;
            this.eof = DFA48_eof;
            this.min = DFA48_min;
            this.max = DFA48_max;
            this.accept = DFA48_accept;
            this.special = DFA48_special;
            this.transition = DFA48_transition;
        }
        public String getDescription() {
            return "1059:1: classBodyElement : ( propertyDeclaration | functionDeclaration | interfaceFunctionDeclaration | statement | directive );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA48_1 = input.LA(1);

                         
                        int index48_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred130_AS3()) ) {s = 46;}

                        else if ( (synpred131_AS3()) ) {s = 47;}

                        else if ( (synpred132_AS3()) ) {s = 48;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA48_2 = input.LA(1);

                         
                        int index48_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred130_AS3()) ) {s = 46;}

                        else if ( (synpred131_AS3()) ) {s = 47;}

                        else if ( (synpred132_AS3()) ) {s = 48;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA48_3 = input.LA(1);

                         
                        int index48_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred130_AS3()) ) {s = 46;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA48_4 = input.LA(1);

                         
                        int index48_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred130_AS3()) ) {s = 46;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA48_5 = input.LA(1);

                         
                        int index48_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred130_AS3()) ) {s = 46;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA48_6 = input.LA(1);

                         
                        int index48_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred131_AS3()) ) {s = 47;}

                        else if ( (synpred132_AS3()) ) {s = 48;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA48_8 = input.LA(1);

                         
                        int index48_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred133_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 49;}

                         
                        input.seek(index48_8);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA48_9 = input.LA(1);

                         
                        int index48_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred133_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 49;}

                         
                        input.seek(index48_9);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA48_10 = input.LA(1);

                         
                        int index48_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred133_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 49;}

                         
                        input.seek(index48_10);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA48_11 = input.LA(1);

                         
                        int index48_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred133_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 49;}

                         
                        input.seek(index48_11);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA48_12 = input.LA(1);

                         
                        int index48_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred133_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 49;}

                         
                        input.seek(index48_12);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA48_20 = input.LA(1);

                         
                        int index48_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred130_AS3()) ) {s = 46;}

                        else if ( (synpred131_AS3()) ) {s = 47;}

                        else if ( (synpred132_AS3()) ) {s = 48;}

                        else if ( (synpred133_AS3()) ) {s = 7;}

                         
                        input.seek(index48_20);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 48, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA49_eotS =
        "\61\uffff";
    static final String DFA49_eofS =
        "\61\uffff";
    static final String DFA49_minS =
        "\1\4\6\0\1\uffff\5\0\7\uffff\1\0\34\uffff";
    static final String DFA49_maxS =
        "\1\u0091\6\0\1\uffff\5\0\7\uffff\1\0\34\uffff";
    static final String DFA49_acceptS =
        "\7\uffff\1\3\46\uffff\1\1\1\2\1\4";
    static final String DFA49_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\uffff\1\6\1\7\1\10\1\11\1\12"+
        "\7\uffff\1\13\34\uffff}>";
    static final String[] DFA49_transitionS = {
            "\5\7\1\4\1\7\1\14\7\7\1\6\2\7\1\13\3\7\1\24\1\7\1\2\3\7\3\24"+
            "\11\7\1\12\1\3\6\7\1\5\1\11\4\2\2\7\1\uffff\1\7\1\uffff\1\10"+
            "\3\uffff\1\7\7\uffff\3\7\2\uffff\2\7\6\uffff\2\7\27\uffff\2"+
            "\7\14\uffff\2\7\2\uffff\1\7\4\uffff\1\7\2\uffff\1\7\1\uffff"+
            "\1\1\1\uffff\3\7",
            "\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 "1067:1: interfaceElement : ( propertyDeclaration | interfaceFunctionDeclaration | statement | directive );";
        }
        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 ( (synpred134_AS3()) ) {s = 46;}

                        else if ( (synpred135_AS3()) ) {s = 47;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        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 ( (synpred134_AS3()) ) {s = 46;}

                        else if ( (synpred135_AS3()) ) {s = 47;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        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 ( (synpred134_AS3()) ) {s = 46;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        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 ( (synpred134_AS3()) ) {s = 46;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        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 ( (synpred134_AS3()) ) {s = 46;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        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 ( (synpred135_AS3()) ) {s = 47;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        input.seek(index49_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA49_8 = input.LA(1);

                         
                        int index49_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred136_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 48;}

                         
                        input.seek(index49_8);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA49_9 = input.LA(1);

                         
                        int index49_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred136_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 48;}

                         
                        input.seek(index49_9);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA49_10 = input.LA(1);

                         
                        int index49_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred136_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 48;}

                         
                        input.seek(index49_10);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA49_11 = input.LA(1);

                         
                        int index49_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred136_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 48;}

                         
                        input.seek(index49_11);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA49_12 = input.LA(1);

                         
                        int index49_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred136_AS3()) ) {s = 7;}

                        else if ( (true) ) {s = 48;}

                         
                        input.seek(index49_12);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA49_20 = input.LA(1);

                         
                        int index49_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred134_AS3()) ) {s = 46;}

                        else if ( (synpred135_AS3()) ) {s = 47;}

                        else if ( (synpred136_AS3()) ) {s = 7;}

                         
                        input.seek(index49_20);
                        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 DFA56_eotS =
        "\6\uffff";
    static final String DFA56_eofS =
        "\6\uffff";
    static final String DFA56_minS =
        "\2\23\1\62\1\64\2\uffff";
    static final String DFA56_maxS =
        "\4\u008d\2\uffff";
    static final String DFA56_acceptS =
        "\4\uffff\1\2\1\1";
    static final String DFA56_specialS =
        "\6\uffff}>";
    static final String[] DFA56_transitionS = {
            "\1\2\6\uffff\1\1\1\uffff\1\1\3\uffff\3\1\23\uffff\4\1\123\uffff"+
            "\1\1",
            "\1\2\6\uffff\1\1\1\uffff\1\1\3\uffff\3\1\23\uffff\4\1\123\uffff"+
            "\1\1",
            "\2\3\1\4\130\uffff\1\5",
            "\1\4\130\uffff\1\5",
            "",
            ""
    };

    static final short[] DFA56_eot = DFA.unpackEncodedString(DFA56_eotS);
    static final short[] DFA56_eof = DFA.unpackEncodedString(DFA56_eofS);
    static final char[] DFA56_min = DFA.unpackEncodedStringToUnsignedChars(DFA56_minS);
    static final char[] DFA56_max = DFA.unpackEncodedStringToUnsignedChars(DFA56_maxS);
    static final short[] DFA56_accept = DFA.unpackEncodedString(DFA56_acceptS);
    static final short[] DFA56_special = DFA.unpackEncodedString(DFA56_specialS);
    static final short[][] DFA56_transition;

    static {
        int numStates = DFA56_transitionS.length;
        DFA56_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA56_transition[i] = DFA.unpackEncodedString(DFA56_transitionS[i]);
        }
    }

    class DFA56 extends DFA {

        public DFA56(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 56;
            this.eot = DFA56_eot;
            this.eof = DFA56_eof;
            this.min = DFA56_min;
            this.max = DFA56_max;
            this.accept = DFA56_accept;
            this.special = DFA56_special;
            this.transition = DFA56_transition;
        }
        public String getDescription() {
            return "1078:1: interfaceFunctionDeclaration : ( ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? semic -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList ) | ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? semic -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList ) );";
        }
    }
    static final String DFA65_eotS =
        "\6\uffff";
    static final String DFA65_eofS =
        "\6\uffff";
    static final String DFA65_minS =
        "\2\23\1\62\1\64\2\uffff";
    static final String DFA65_maxS =
        "\4\u008d\2\uffff";
    static final String DFA65_acceptS =
        "\4\uffff\1\1\1\2";
    static final String DFA65_specialS =
        "\6\uffff}>";
    static final String[] DFA65_transitionS = {
            "\1\2\6\uffff\1\1\1\uffff\1\1\3\uffff\3\1\23\uffff\4\1\123\uffff"+
            "\1\1",
            "\1\2\6\uffff\1\1\1\uffff\1\1\3\uffff\3\1\23\uffff\4\1\123\uffff"+
            "\1\1",
            "\2\3\1\5\130\uffff\1\4",
            "\1\5\130\uffff\1\4",
            "",
            ""
    };

    static final short[] DFA65_eot = DFA.unpackEncodedString(DFA65_eotS);
    static final short[] DFA65_eof = DFA.unpackEncodedString(DFA65_eofS);
    static final char[] DFA65_min = DFA.unpackEncodedStringToUnsignedChars(DFA65_minS);
    static final char[] DFA65_max = DFA.unpackEncodedStringToUnsignedChars(DFA65_maxS);
    static final short[] DFA65_accept = DFA.unpackEncodedString(DFA65_acceptS);
    static final short[] DFA65_special = DFA.unpackEncodedString(DFA65_specialS);
    static final short[][] DFA65_transition;

    static {
        int numStates = DFA65_transitionS.length;
        DFA65_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA65_transition[i] = DFA.unpackEncodedString(DFA65_transitionS[i]);
        }
    }

    class DFA65 extends DFA {

        public DFA65(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 65;
            this.eot = DFA65_eot;
            this.eof = DFA65_eof;
            this.min = DFA65_min;
            this.max = DFA65_max;
            this.accept = DFA65_accept;
            this.special = DFA65_special;
            this.transition = DFA65_transition;
        }
        public String getDescription() {
            return "1115:1: functionDeclaration : ( ( memberModifiers )? FUNCTION ( accessorModifier )? IDENTIFIER formalParameterList ( COLON type )? functionBody -> ^( FUNCTION IDENTIFIER ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody ) | ( memberModifiers )? FUNCTION ( accessorModifier )? NAMESPACE formalParameterList ( COLON type )? functionBody -> ^( FUNCTION NAMESPACE ( ^( COLON type ) )? ( accessorModifier )? ( memberModifiers )? formalParameterList functionBody ) );";
        }
    }
    static final String DFA72_eotS =
        "\60\uffff";
    static final String DFA72_eofS =
        "\60\uffff";
    static final String DFA72_minS =
        "\1\4\17\uffff\2\0\1\uffff\1\0\30\uffff\1\0\3\uffff";
    static final String DFA72_maxS =
        "\1\u0091\17\uffff\2\0\1\uffff\1\0\30\uffff\1\0\3\uffff";
    static final String DFA72_acceptS =
        "\1\uffff\1\3\1\1\54\uffff\1\2";
    static final String DFA72_specialS =
        "\20\uffff\1\0\1\1\1\uffff\1\2\30\uffff\1\3\3\uffff}>";
    static final String[] DFA72_transitionS = {
            "\17\2\1\23\6\2\1\54\1\2\1\21\3\2\3\54\23\2\4\21\2\2\1\1\1\2"+
            "\1\uffff\1\2\3\uffff\1\2\7\uffff\3\2\2\uffff\2\2\6\uffff\2\2"+
            "\27\uffff\2\2\14\uffff\2\2\2\uffff\1\2\4\uffff\1\2\2\uffff\1"+
            "\2\1\uffff\1\20\1\uffff\3\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            ""
    };

    static final short[] DFA72_eot = DFA.unpackEncodedString(DFA72_eotS);
    static final short[] DFA72_eof = DFA.unpackEncodedString(DFA72_eofS);
    static final char[] DFA72_min = DFA.unpackEncodedStringToUnsignedChars(DFA72_minS);
    static final char[] DFA72_max = DFA.unpackEncodedStringToUnsignedChars(DFA72_maxS);
    static final short[] DFA72_accept = DFA.unpackEncodedString(DFA72_acceptS);
    static final short[] DFA72_special = DFA.unpackEncodedString(DFA72_specialS);
    static final short[][] DFA72_transition;

    static {
        int numStates = DFA72_transitionS.length;
        DFA72_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA72_transition[i] = DFA.unpackEncodedString(DFA72_transitionS[i]);
        }
    }

    class DFA72 extends DFA {

        public DFA72(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 72;
            this.eot = DFA72_eot;
            this.eof = DFA72_eof;
            this.min = DFA72_min;
            this.max = DFA72_max;
            this.accept = DFA72_accept;
            this.special = DFA72_special;
            this.transition = DFA72_transition;
        }
        public String getDescription() {
            return "()* loopback of 1146:12: ( statement | functionDeclaration )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA72_16 = input.LA(1);

                         
                        int index72_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred161_AS3()) ) {s = 2;}

                        else if ( (synpred162_AS3()) ) {s = 47;}

                         
                        input.seek(index72_16);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA72_17 = input.LA(1);

                         
                        int index72_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred161_AS3()) ) {s = 2;}

                        else if ( (synpred162_AS3()) ) {s = 47;}

                         
                        input.seek(index72_17);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA72_19 = input.LA(1);

                         
                        int index72_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred161_AS3()) ) {s = 2;}

                        else if ( (synpred162_AS3()) ) {s = 47;}

                         
                        input.seek(index72_19);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA72_44 = input.LA(1);

                         
                        int index72_44 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred161_AS3()) ) {s = 2;}

                        else if ( (synpred162_AS3()) ) {s = 47;}

                         
                        input.seek(index72_44);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 72, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA74_eotS =
        "\77\uffff";
    static final String DFA74_eofS =
        "\77\uffff";
    static final String DFA74_minS =
        "\1\4\7\0\7\uffff\1\0\14\uffff\1\0\1\uffff\13\0\1\uffff\1\0\24\uffff";
    static final String DFA74_maxS =
        "\1\u0091\7\0\7\uffff\1\0\14\uffff\1\0\1\uffff\13\0\1\uffff\1\0\24"+
        "\uffff";
    static final String DFA74_acceptS =
        "\10\uffff\1\4\40\uffff\1\23\2\uffff\1\1\1\2\1\3\1\7\1\24\1\5\1\6"+
        "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\25";
    static final String DFA74_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\7\uffff\1\7\14\uffff\1\10\1"+
        "\uffff\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1"+
        "\uffff\1\24\24\uffff}>";
    static final String[] DFA74_transitionS = {
            "\1\10\1\42\3\10\1\34\1\43\1\6\1\10\1\45\4\10\1\44\1\10\1\47"+
            "\1\10\1\5\14\10\1\41\1\10\1\37\1\10\1\52\2\10\1\36\1\10\1\4"+
            "\1\50\1\10\1\46\1\40\3\10\1\7\1\3\4\10\1\51\1\1\1\uffff\1\10"+
            "\1\uffff\1\2\3\uffff\1\10\7\uffff\3\10\2\uffff\2\10\6\uffff"+
            "\2\10\27\uffff\2\10\14\uffff\2\10\2\uffff\1\10\4\uffff\1\10"+
            "\2\uffff\1\10\1\uffff\1\17\1\uffff\3\10",
            "\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[] 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 "1171:4: ( blockStatement | directive | namespaceDirective | expression semic | constantVarStatement | tryStatement | labelledStatement | switchStatement | withStatement | returnStatement | breakStatement | continueStatement | forStatement | forInStatement | forEachInStatement | doWhileStatement | whileStatement | ifStatement | emptyStatement | variableStatement | throwStatement )";
        }
        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 ( (synpred173_AS3()) ) {s = 44;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        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 ( (synpred174_AS3()) ) {s = 45;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        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 ( (synpred174_AS3()) ) {s = 45;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        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 ( (synpred174_AS3()) ) {s = 45;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        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 ( (synpred174_AS3()) ) {s = 45;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        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 ( (synpred174_AS3()) ) {s = 45;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        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 ( (synpred175_AS3()) ) {s = 46;}

                        else if ( (synpred176_AS3()) ) {s = 8;}

                         
                        input.seek(index74_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA74_15 = input.LA(1);

                         
                        int index74_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred179_AS3()) ) {s = 47;}

                        else if ( (synpred192_AS3()) ) {s = 48;}

                         
                        input.seek(index74_15);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA74_28 = input.LA(1);

                         
                        int index74_28 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred177_AS3()) ) {s = 49;}

                         
                        input.seek(index74_28);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA74_30 = input.LA(1);

                         
                        int index74_30 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred178_AS3()) ) {s = 50;}

                         
                        input.seek(index74_30);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA74_31 = input.LA(1);

                         
                        int index74_31 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred180_AS3()) ) {s = 51;}

                         
                        input.seek(index74_31);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA74_32 = input.LA(1);

                         
                        int index74_32 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred181_AS3()) ) {s = 52;}

                         
                        input.seek(index74_32);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA74_33 = input.LA(1);

                         
                        int index74_33 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred182_AS3()) ) {s = 53;}

                         
                        input.seek(index74_33);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA74_34 = input.LA(1);

                         
                        int index74_34 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred183_AS3()) ) {s = 54;}

                         
                        input.seek(index74_34);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA74_35 = input.LA(1);

                         
                        int index74_35 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred184_AS3()) ) {s = 55;}

                         
                        input.seek(index74_35);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA74_36 = input.LA(1);

                         
                        int index74_36 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred185_AS3()) ) {s = 56;}

                        else if ( (synpred186_AS3()) ) {s = 57;}

                        else if ( (synpred187_AS3()) ) {s = 58;}

                         
                        input.seek(index74_36);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA74_37 = input.LA(1);

                         
                        int index74_37 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred188_AS3()) ) {s = 59;}

                         
                        input.seek(index74_37);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA74_38 = input.LA(1);

                         
                        int index74_38 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred189_AS3()) ) {s = 60;}

                         
                        input.seek(index74_38);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA74_39 = input.LA(1);

                         
                        int index74_39 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred190_AS3()) ) {s = 61;}

                         
                        input.seek(index74_39);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA74_40 = input.LA(1);

                         
                        int index74_40 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (synpred192_AS3()) ) {s = 48;}

                         
                        input.seek(index74_40);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA74_42 = input.LA(1);

                         
                        int index74_42 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred176_AS3()) ) {s = 8;}

                        else if ( (true) ) {s = 62;}

                         
                        input.seek(index74_42);
                        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 DFA83_eotS =
        "\57\uffff";
    static final String DFA83_eofS =
        "\1\2\56\uffff";
    static final String DFA83_minS =
        "\1\4\1\0\1\uffff\2\0\52\uffff";
    static final String DFA83_maxS =
        "\1\u0091\1\0\1\uffff\2\0\52\uffff";
    static final String DFA83_acceptS =
        "\2\uffff\1\2\3\uffff\1\1\50\uffff";
    static final String DFA83_specialS =
        "\1\uffff\1\0\1\uffff\1\1\1\2\52\uffff}>";
    static final String[] DFA83_transitionS = {
            "\1\6\1\1\1\3\4\6\1\4\60\6\1\2\1\6\1\uffff\1\6\3\uffff\1\6\7"+
            "\uffff\3\6\2\uffff\2\6\6\uffff\2\6\27\uffff\2\6\14\uffff\2\6"+
            "\2\uffff\1\6\4\uffff\1\6\2\uffff\1\6\1\uffff\1\6\1\uffff\3\6",
            "\1\uffff",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA83_eot = DFA.unpackEncodedString(DFA83_eotS);
    static final short[] DFA83_eof = DFA.unpackEncodedString(DFA83_eofS);
    static final char[] DFA83_min = DFA.unpackEncodedStringToUnsignedChars(DFA83_minS);
    static final char[] DFA83_max = DFA.unpackEncodedStringToUnsignedChars(DFA83_maxS);
    static final short[] DFA83_accept = DFA.unpackEncodedString(DFA83_acceptS);
    static final short[] DFA83_special = DFA.unpackEncodedString(DFA83_specialS);
    static final short[][] DFA83_transition;

    static {
        int numStates = DFA83_transitionS.length;
        DFA83_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA83_transition[i] = DFA.unpackEncodedString(DFA83_transitionS[i]);
        }
    }

    class DFA83 extends DFA {

        public DFA83(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 83;
            this.eot = DFA83_eot;
            this.eof = DFA83_eof;
            this.min = DFA83_min;
            this.max = DFA83_max;
            this.accept = DFA83_accept;
            this.special = DFA83_special;
            this.transition = DFA83_transition;
        }
        public String getDescription() {
            return "()* loopback of 1248:16: ( statement )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA83_1 = input.LA(1);

                         
                        int index83_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred202_AS3()) ) {s = 6;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index83_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA83_3 = input.LA(1);

                         
                        int index83_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred202_AS3()) ) {s = 6;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index83_3);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA83_4 = input.LA(1);

                         
                        int index83_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred202_AS3()) ) {s = 6;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index83_4);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 83, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA109_eotS =
        "\32\uffff";
    static final String DFA109_eofS =
        "\32\uffff";
    static final String DFA109_minS =
        "\1\4\27\0\2\uffff";
    static final String DFA109_maxS =
        "\1\u0091\27\0\2\uffff";
    static final String DFA109_acceptS =
        "\30\uffff\1\2\1\1";
    static final String DFA109_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\1\25\1\26\2\uffff}>";
    static final String[] DFA109_transitionS = {
            "\10\27\1\26\3\27\1\4\2\27\1\15\10\27\1\13\1\25\1\3\5\27\1\2"+
            "\1\27\1\1\1\27\1\13\1\4\1\27\1\26\2\27\1\26\2\27\4\13\1\27\4"+
            "\13\1\uffff\1\11\1\uffff\1\24\1\uffff\1\10\3\uffff\1\22\7\uffff"+
            "\2\30\1\16\2\uffff\2\30\6\uffff\2\30\27\uffff\1\14\1\23\14\uffff"+
            "\2\6\2\uffff\1\7\4\uffff\1\5\2\uffff\1\5\1\uffff\1\12\1\uffff"+
            "\1\17\1\20\1\21",
            "\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[] DFA109_eot = DFA.unpackEncodedString(DFA109_eotS);
    static final short[] DFA109_eof = DFA.unpackEncodedString(DFA109_eofS);
    static final char[] DFA109_min = DFA.unpackEncodedStringToUnsignedChars(DFA109_minS);
    static final char[] DFA109_max = DFA.unpackEncodedStringToUnsignedChars(DFA109_maxS);
    static final short[] DFA109_accept = DFA.unpackEncodedString(DFA109_acceptS);
    static final short[] DFA109_special = DFA.unpackEncodedString(DFA109_specialS);
    static final short[][] DFA109_transition;

    static {
        int numStates = DFA109_transitionS.length;
        DFA109_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA109_transition[i] = DFA.unpackEncodedString(DFA109_transitionS[i]);
        }
    }

    class DFA109 extends DFA {

        public DFA109(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 109;
            this.eot = DFA109_eot;
            this.eof = DFA109_eof;
            this.min = DFA109_min;
            this.max = DFA109_max;
            this.accept = DFA109_accept;
            this.special = DFA109_special;
            this.transition = DFA109_transition;
        }
        public String getDescription() {
            return "1412:1: assignmentExpression : ( leftHandSideExpression assignmentOperator assignmentExpression | conditionalExpression );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA109_1 = input.LA(1);

                         
                        int index109_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA109_2 = input.LA(1);

                         
                        int index109_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA109_3 = input.LA(1);

                         
                        int index109_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA109_4 = input.LA(1);

                         
                        int index109_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA109_5 = input.LA(1);

                         
                        int index109_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA109_6 = input.LA(1);

                         
                        int index109_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA109_7 = input.LA(1);

                         
                        int index109_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA109_8 = input.LA(1);

                         
                        int index109_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA109_9 = input.LA(1);

                         
                        int index109_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA109_10 = input.LA(1);

                         
                        int index109_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA109_11 = input.LA(1);

                         
                        int index109_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA109_12 = input.LA(1);

                         
                        int index109_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA109_13 = input.LA(1);

                         
                        int index109_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA109_14 = input.LA(1);

                         
                        int index109_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA109_15 = input.LA(1);

                         
                        int index109_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA109_16 = input.LA(1);

                         
                        int index109_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA109_17 = input.LA(1);

                         
                        int index109_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA109_18 = input.LA(1);

                         
                        int index109_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA109_19 = input.LA(1);

                         
                        int index109_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA109_20 = input.LA(1);

                         
                        int index109_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA109_21 = input.LA(1);

                         
                        int index109_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA109_22 = input.LA(1);

                         
                        int index109_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA109_23 = input.LA(1);

                         
                        int index109_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred229_AS3()) ) {s = 25;}

                        else if ( (true) ) {s = 24;}

                         
                        input.seek(index109_23);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 109, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA110_eotS =
        "\32\uffff";
    static final String DFA110_eofS =
        "\32\uffff";
    static final String DFA110_minS =
        "\1\4\27\0\2\uffff";
    static final String DFA110_maxS =
        "\1\u0091\27\0\2\uffff";
    static final String DFA110_acceptS =
        "\30\uffff\1\1\1\2";
    static final String DFA110_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\1\25\1\26\2\uffff}>";
    static final String[] DFA110_transitionS = {
            "\10\27\1\26\3\27\1\4\2\27\1\15\10\27\1\13\1\25\1\3\5\27\1\2"+
            "\1\27\1\1\1\27\1\13\1\4\1\27\1\26\2\27\1\26\2\27\4\13\1\27\4"+
            "\13\1\uffff\1\11\1\uffff\1\24\1\uffff\1\10\3\uffff\1\22\7\uffff"+
            "\2\30\1\16\2\uffff\2\30\6\uffff\2\30\27\uffff\1\14\1\23\14\uffff"+
            "\2\6\2\uffff\1\7\4\uffff\1\5\2\uffff\1\5\1\uffff\1\12\1\uffff"+
            "\1\17\1\20\1\21",
            "\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[] DFA110_eot = DFA.unpackEncodedString(DFA110_eotS);
    static final short[] DFA110_eof = DFA.unpackEncodedString(DFA110_eofS);
    static final char[] DFA110_min = DFA.unpackEncodedStringToUnsignedChars(DFA110_minS);
    static final char[] DFA110_max = DFA.unpackEncodedStringToUnsignedChars(DFA110_maxS);
    static final short[] DFA110_accept = DFA.unpackEncodedString(DFA110_acceptS);
    static final short[] DFA110_special = DFA.unpackEncodedString(DFA110_specialS);
    static final short[][] DFA110_transition;

    static {
        int numStates = DFA110_transitionS.length;
        DFA110_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA110_transition[i] = DFA.unpackEncodedString(DFA110_transitionS[i]);
        }
    }

    class DFA110 extends DFA {

        public DFA110(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 110;
            this.eot = DFA110_eot;
            this.eof = DFA110_eof;
            this.min = DFA110_min;
            this.max = DFA110_max;
            this.accept = DFA110_accept;
            this.special = DFA110_special;
            this.transition = DFA110_transition;
        }
        public String getDescription() {
            return "1416:1: assignmentExpressionNoIn : ( conditionalExpressionNoIn | leftHandSideExpression assignmentOperator assignmentExpressionNoIn );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA110_1 = input.LA(1);

                         
                        int index110_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA110_2 = input.LA(1);

                         
                        int index110_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA110_3 = input.LA(1);

                         
                        int index110_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA110_4 = input.LA(1);

                         
                        int index110_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA110_5 = input.LA(1);

                         
                        int index110_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA110_6 = input.LA(1);

                         
                        int index110_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA110_7 = input.LA(1);

                         
                        int index110_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA110_8 = input.LA(1);

                         
                        int index110_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA110_9 = input.LA(1);

                         
                        int index110_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA110_10 = input.LA(1);

                         
                        int index110_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA110_11 = input.LA(1);

                         
                        int index110_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA110_12 = input.LA(1);

                         
                        int index110_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA110_13 = input.LA(1);

                         
                        int index110_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA110_14 = input.LA(1);

                         
                        int index110_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA110_15 = input.LA(1);

                         
                        int index110_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA110_16 = input.LA(1);

                         
                        int index110_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA110_17 = input.LA(1);

                         
                        int index110_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA110_18 = input.LA(1);

                         
                        int index110_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA110_19 = input.LA(1);

                         
                        int index110_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA110_20 = input.LA(1);

                         
                        int index110_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA110_21 = input.LA(1);

                         
                        int index110_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA110_22 = input.LA(1);

                         
                        int index110_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA110_23 = input.LA(1);

                         
                        int index110_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred230_AS3()) ) {s = 24;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index110_23);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 110, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA127_eotS =
        "\103\uffff";
    static final String DFA127_eofS =
        "\1\1\102\uffff";
    static final String DFA127_minS =
        "\1\4\46\uffff\1\0\24\uffff\1\0\2\uffff\1\0\3\uffff";
    static final String DFA127_maxS =
        "\1\u0091\46\uffff\1\0\24\uffff\1\0\2\uffff\1\0\3\uffff";
    static final String DFA127_acceptS =
        "\1\uffff\1\2\76\uffff\1\1\2\uffff";
    static final String DFA127_specialS =
        "\47\uffff\1\0\24\uffff\1\1\2\uffff\1\2\3\uffff}>";
    static final String[] DFA127_transitionS = {
            "\1\77\22\1\1\74\1\77\2\1\1\77\45\1\1\uffff\1\1\1\47\2\100\1"+
            "\uffff\7\1\2\uffff\2\1\3\uffff\11\1\23\uffff\2\1\14\uffff\2"+
            "\1\2\uffff\1\1\4\uffff\1\1\2\uffff\1\1\1\uffff\1\1\1\uffff\3"+
            "\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "\1\uffff",
            "",
            "",
            ""
    };

    static final short[] DFA127_eot = DFA.unpackEncodedString(DFA127_eotS);
    static final short[] DFA127_eof = DFA.unpackEncodedString(DFA127_eofS);
    static final char[] DFA127_min = DFA.unpackEncodedStringToUnsignedChars(DFA127_minS);
    static final char[] DFA127_max = DFA.unpackEncodedStringToUnsignedChars(DFA127_maxS);
    static final short[] DFA127_accept = DFA.unpackEncodedString(DFA127_acceptS);
    static final short[] DFA127_special = DFA.unpackEncodedString(DFA127_specialS);
    static final short[][] DFA127_transition;

    static {
        int numStates = DFA127_transitionS.length;
        DFA127_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA127_transition[i] = DFA.unpackEncodedString(DFA127_transitionS[i]);
        }
    }

    class DFA127 extends DFA {

        public DFA127(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 127;
            this.eot = DFA127_eot;
            this.eof = DFA127_eof;
            this.min = DFA127_min;
            this.max = DFA127_max;
            this.accept = DFA127_accept;
            this.special = DFA127_special;
            this.transition = DFA127_transition;
        }
        public String getDescription() {
            return "()* loopback of 1492:2: ( (g= GT (assign= ASSIGN )? | ( IN | LT | LTE | INSTANCEOF | IS | AS ) ) shiftExpression )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA127_39 = input.LA(1);

                         
                        int index127_39 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred269_AS3()) ) {s = 64;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index127_39);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA127_60 = input.LA(1);

                         
                        int index127_60 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred269_AS3()) ) {s = 64;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index127_60);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA127_63 = input.LA(1);

                         
                        int index127_63 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred269_AS3()) ) {s = 64;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index127_63);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 127, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA132_eotS =
        "\106\uffff";
    static final String DFA132_eofS =
        "\1\1\105\uffff";
    static final String DFA132_minS =
        "\1\4\57\uffff\1\0\25\uffff";
    static final String DFA132_maxS =
        "\1\u0091\57\uffff\1\0\25\uffff";
    static final String DFA132_acceptS =
        "\1\uffff\1\2\103\uffff\1\1";
    static final String DFA132_specialS =
        "\60\uffff\1\0\25\uffff}>";
    static final String[] DFA132_transitionS = {
            "\75\1\1\uffff\4\1\1\uffff\4\1\2\60\1\1\2\uffff\16\1\23\uffff"+
            "\2\1\14\uffff\2\1\2\uffff\1\1\4\uffff\1\1\2\uffff\1\1\1\uffff"+
            "\1\1\1\uffff\3\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA132_eot = DFA.unpackEncodedString(DFA132_eotS);
    static final short[] DFA132_eof = DFA.unpackEncodedString(DFA132_eofS);
    static final char[] DFA132_min = DFA.unpackEncodedStringToUnsignedChars(DFA132_minS);
    static final char[] DFA132_max = DFA.unpackEncodedStringToUnsignedChars(DFA132_maxS);
    static final short[] DFA132_accept = DFA.unpackEncodedString(DFA132_acceptS);
    static final short[] DFA132_special = DFA.unpackEncodedString(DFA132_specialS);
    static final short[][] DFA132_transition;

    static {
        int numStates = DFA132_transitionS.length;
        DFA132_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA132_transition[i] = DFA.unpackEncodedString(DFA132_transitionS[i]);
        }
    }

    class DFA132 extends DFA {

        public DFA132(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 132;
            this.eot = DFA132_eot;
            this.eof = DFA132_eof;
            this.min = DFA132_min;
            this.max = DFA132_max;
            this.accept = DFA132_accept;
            this.special = DFA132_special;
            this.transition = DFA132_transition;
        }
        public String getDescription() {
            return "()* loopback of 1521:29: ( ( PLUS | SUB ) multiplicativeExpression )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA132_48 = input.LA(1);

                         
                        int index132_48 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred281_AS3()) ) {s = 69;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index132_48);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 132, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA133_eotS =
        "\106\uffff";
    static final String DFA133_eofS =
        "\1\1\105\uffff";
    static final String DFA133_minS =
        "\1\4\47\uffff\1\0\35\uffff";
    static final String DFA133_maxS =
        "\1\u0091\47\uffff\1\0\35\uffff";
    static final String DFA133_acceptS =
        "\1\uffff\1\2\103\uffff\1\1";
    static final String DFA133_specialS =
        "\50\uffff\1\0\35\uffff}>";
    static final String[] DFA133_transitionS = {
            "\75\1\1\uffff\4\1\1\uffff\6\1\1\50\2\105\16\1\23\uffff\2\1\14"+
            "\uffff\2\1\2\uffff\1\1\4\uffff\1\1\2\uffff\1\1\1\uffff\1\1\1"+
            "\uffff\3\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA133_eot = DFA.unpackEncodedString(DFA133_eotS);
    static final short[] DFA133_eof = DFA.unpackEncodedString(DFA133_eofS);
    static final char[] DFA133_min = DFA.unpackEncodedStringToUnsignedChars(DFA133_minS);
    static final char[] DFA133_max = DFA.unpackEncodedStringToUnsignedChars(DFA133_maxS);
    static final short[] DFA133_accept = DFA.unpackEncodedString(DFA133_acceptS);
    static final short[] DFA133_special = DFA.unpackEncodedString(DFA133_specialS);
    static final short[][] DFA133_transition;

    static {
        int numStates = DFA133_transitionS.length;
        DFA133_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA133_transition[i] = DFA.unpackEncodedString(DFA133_transitionS[i]);
        }
    }

    class DFA133 extends DFA {

        public DFA133(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 133;
            this.eot = DFA133_eot;
            this.eof = DFA133_eof;
            this.min = DFA133_min;
            this.max = DFA133_max;
            this.accept = DFA133_accept;
            this.special = DFA133_special;
            this.transition = DFA133_transition;
        }
        public String getDescription() {
            return "()* loopback of 1526:20: ( ( STAR | DIV | MOD ) unaryExpression )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA133_40 = input.LA(1);

                         
                        int index133_40 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred284_AS3()) ) {s = 69;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index133_40);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 133, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA135_eotS =
        "\110\uffff";
    static final String DFA135_eofS =
        "\1\2\107\uffff";
    static final String DFA135_minS =
        "\1\4\1\0\106\uffff";
    static final String DFA135_maxS =
        "\1\u0091\1\0\106\uffff";
    static final String DFA135_acceptS =
        "\2\uffff\1\2\104\uffff\1\1";
    static final String DFA135_specialS =
        "\1\uffff\1\0\106\uffff}>";
    static final String[] DFA135_transitionS = {
            "\75\2\1\uffff\4\2\1\uffff\11\2\2\1\14\2\23\uffff\2\2\14\uffff"+
            "\2\2\2\uffff\1\2\4\uffff\1\2\2\uffff\1\2\1\uffff\1\2\1\uffff"+
            "\3\2",
            "\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 "1539:27: ( postfixOp )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA135_1 = input.LA(1);

                         
                        int index135_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred294_AS3()) ) {s = 71;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index135_1);
                        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 =
        "\117\uffff";
    static final String DFA138_eofS =
        "\1\1\116\uffff";
    static final String DFA138_minS =
        "\1\4\32\uffff\1\0\26\uffff\1\0\25\uffff\1\0\6\uffff";
    static final String DFA138_maxS =
        "\1\u0091\32\uffff\1\0\26\uffff\1\0\25\uffff\1\0\6\uffff";
    static final String DFA138_acceptS =
        "\1\uffff\1\7\107\uffff\1\4\1\2\1\1\1\3\1\5\1\6";
    static final String DFA138_specialS =
        "\33\uffff\1\0\26\uffff\1\1\25\uffff\1\2\6\uffff}>";
    static final String[] DFA138_transitionS = {
            "\71\1\1\62\1\1\1\33\1\1\1\110\4\1\1\uffff\30\1\2\uffff\13\1"+
            "\1\uffff\1\111\3\uffff\2\1\14\uffff\2\1\2\uffff\1\1\4\uffff"+
            "\1\1\2\uffff\1\1\1\uffff\1\1\1\uffff\3\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\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 "()* loopback of 1557:21: ( arguments | LBRACK expression RBRACK | DOT ( eitherIdentifier XML_NS_OP )? eitherIdentifier | XML_ELLIPSIS eitherIdentifier | DOT parExpression | typePostfixSyntax )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA138_27 = input.LA(1);

                         
                        int index138_27 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred299_AS3()) ) {s = 74;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index138_27);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA138_50 = input.LA(1);

                         
                        int index138_50 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred298_AS3()) ) {s = 75;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index138_50);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA138_72 = input.LA(1);

                         
                        int index138_72 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred301_AS3()) ) {s = 76;}

                        else if ( (synpred303_AS3()) ) {s = 77;}

                        else if ( (synpred304_AS3()) ) {s = 78;}

                         
                        input.seek(index138_72);
                        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 DFA145_eotS =
        "\73\uffff";
    static final String DFA145_eofS =
        "\1\uffff\1\14\1\16\2\5\3\uffff\2\22\61\uffff";
    static final String DFA145_minS =
        "\5\4\3\uffff\2\4\3\uffff\1\4\1\uffff\3\4\1\uffff\50\0";
    static final String DFA145_maxS =
        "\5\u0091\3\uffff\2\u0091\3\uffff\1\u0091\1\uffff\3\u0091\1\uffff"+
        "\50\0";
    static final String DFA145_acceptS =
        "\5\uffff\1\3\1\4\1\5\2\uffff\1\7\1\10\1\1\1\uffff\1\2\3\uffff\1"+
        "\6\50\uffff";
    static final String DFA145_specialS =
        "\23\uffff\1\5\1\45\1\11\1\2\1\42\1\25\1\46\1\24\1\37\1\27\1\21\1"+
        "\41\1\13\1\17\1\36\1\32\1\33\1\12\1\43\1\40\1\26\1\16\1\7\1\44\1"+
        "\3\1\10\1\30\1\6\1\14\1\47\1\4\1\35\1\1\1\23\1\20\1\22\1\15\1\0"+
        "\1\31\1\34}>";
    static final String[] DFA145_transitionS = {
            "\14\12\1\4\13\12\1\11\1\12\1\3\5\12\1\2\1\12\1\1\1\12\1\11\1"+
            "\4\7\12\4\11\1\12\4\11\1\uffff\1\7\1\uffff\1\13\1\uffff\1\6"+
            "\3\uffff\1\12\11\uffff\1\12\43\uffff\2\12\14\uffff\2\5\2\uffff"+
            "\1\5\4\uffff\1\5\2\uffff\1\5\1\uffff\1\10\1\uffff\3\12",
            "\102\14\1\uffff\5\14\1\15\22\14\2\uffff\13\14\1\uffff\1\14"+
            "\2\uffff\1\12\2\14\14\uffff\2\14\2\uffff\1\14\4\uffff\1\14\2"+
            "\uffff\1\14\1\uffff\1\14\1\uffff\3\14",
            "\102\16\1\uffff\5\16\1\17\22\16\2\uffff\13\16\1\uffff\1\16"+
            "\2\uffff\1\12\2\16\14\uffff\2\16\2\uffff\1\16\4\uffff\1\16\2"+
            "\uffff\1\16\1\uffff\1\16\1\uffff\3\16",
            "\102\5\1\uffff\5\5\1\20\22\5\2\uffff\13\5\1\uffff\1\5\2\uffff"+
            "\1\12\2\5\14\uffff\2\5\2\uffff\1\5\4\uffff\1\5\2\uffff\1\5\1"+
            "\uffff\1\5\1\uffff\3\5",
            "\102\5\1\uffff\5\5\1\20\22\5\2\uffff\13\5\1\uffff\1\5\2\uffff"+
            "\1\12\2\5\14\uffff\2\5\2\uffff\1\5\4\uffff\1\5\2\uffff\1\5\1"+
            "\uffff\1\5\1\uffff\3\5",
            "",
            "",
            "",
            "\102\22\1\uffff\5\22\1\21\22\22\2\uffff\13\22\1\uffff\1\22"+
            "\2\uffff\1\12\2\22\14\uffff\2\22\2\uffff\1\22\4\uffff\1\22\2"+
            "\uffff\1\22\1\uffff\1\22\1\uffff\3\22",
            "\102\22\1\uffff\5\22\1\21\22\22\2\uffff\13\22\1\uffff\1\22"+
            "\2\uffff\1\12\2\22\14\uffff\2\22\2\uffff\1\22\4\uffff\1\22\2"+
            "\uffff\1\22\1\uffff\1\22\1\uffff\3\22",
            "",
            "",
            "",
            "\10\34\1\33\3\34\1\26\2\34\1\31\10\34\1\30\1\32\1\25\5\34\1"+
            "\24\1\34\1\23\1\34\1\30\1\26\1\34\1\33\2\34\1\33\2\34\4\30\1"+
            "\34\4\30\1\uffff\1\14\1\uffff\1\14\1\uffff\1\14\3\uffff\1\14"+
            "\7\uffff\3\14\2\uffff\2\14\6\uffff\2\14\27\uffff\2\14\14\uffff"+
            "\2\14\2\uffff\1\14\4\uffff\1\14\2\uffff\1\14\1\uffff\1\27\1"+
            "\uffff\3\14",
            "",
            "\10\46\1\45\3\46\1\40\2\46\1\43\10\46\1\42\1\44\1\37\5\46\1"+
            "\36\1\46\1\35\1\46\1\42\1\40\1\46\1\45\2\46\1\45\2\46\4\42\1"+
            "\46\4\42\1\uffff\1\16\1\uffff\1\16\1\uffff\1\16\3\uffff\1\16"+
            "\7\uffff\3\16\2\uffff\2\16\6\uffff\2\16\27\uffff\2\16\14\uffff"+
            "\2\16\2\uffff\1\16\4\uffff\1\16\2\uffff\1\16\1\uffff\1\41\1"+
            "\uffff\3\16",
            "\10\60\1\57\3\60\1\52\2\60\1\55\10\60\1\54\1\56\1\51\5\60\1"+
            "\50\1\60\1\47\1\60\1\54\1\52\1\60\1\57\2\60\1\57\2\60\4\54\1"+
            "\60\4\54\1\uffff\1\5\1\uffff\1\5\1\uffff\1\5\3\uffff\1\5\7\uffff"+
            "\3\5\2\uffff\2\5\6\uffff\2\5\27\uffff\2\5\14\uffff\2\5\2\uffff"+
            "\1\5\4\uffff\1\5\2\uffff\1\5\1\uffff\1\53\1\uffff\3\5",
            "\10\72\1\71\3\72\1\64\2\72\1\67\10\72\1\66\1\70\1\63\5\72\1"+
            "\62\1\72\1\61\1\72\1\66\1\64\1\72\1\71\2\72\1\71\2\72\4\66\1"+
            "\72\4\66\1\uffff\1\22\1\uffff\1\22\1\uffff\1\22\3\uffff\1\22"+
            "\7\uffff\3\22\2\uffff\2\22\6\uffff\2\22\27\uffff\2\22\14\uffff"+
            "\2\22\2\uffff\1\22\4\uffff\1\22\2\uffff\1\22\1\uffff\1\65\1"+
            "\uffff\3\22",
            "",
            "\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",
            "\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[] DFA145_eot = DFA.unpackEncodedString(DFA145_eotS);
    static final short[] DFA145_eof = DFA.unpackEncodedString(DFA145_eofS);
    static final char[] DFA145_min = DFA.unpackEncodedStringToUnsignedChars(DFA145_minS);
    static final char[] DFA145_max = DFA.unpackEncodedStringToUnsignedChars(DFA145_maxS);
    static final short[] DFA145_accept = DFA.unpackEncodedString(DFA145_acceptS);
    static final short[] DFA145_special = DFA.unpackEncodedString(DFA145_specialS);
    static final short[][] DFA145_transition;

    static {
        int numStates = DFA145_transitionS.length;
        DFA145_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA145_transition[i] = DFA.unpackEncodedString(DFA145_transitionS[i]);
        }
    }

    class DFA145 extends DFA {

        public DFA145(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 145;
            this.eot = DFA145_eot;
            this.eof = DFA145_eof;
            this.min = DFA145_min;
            this.max = DFA145_max;
            this.accept = DFA145_accept;
            this.special = DFA145_special;
            this.transition = DFA145_transition;
        }
        public String getDescription() {
            return "1622:1: primaryExpressionHelper : ( THIS | SUPER | literal | arrayLiteral | objectLiteral | identifierLiteral | xmlPrimaryExpression | parExpression );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA145_56 = input.LA(1);

                         
                        int index145_56 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_56);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA145_51 = input.LA(1);

                         
                        int index145_51 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_51);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA145_22 = input.LA(1);

                         
                        int index145_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_22);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA145_43 = input.LA(1);

                         
                        int index145_43 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_43);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA145_49 = input.LA(1);

                         
                        int index145_49 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_49);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA145_19 = input.LA(1);

                         
                        int index145_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_19);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA145_46 = input.LA(1);

                         
                        int index145_46 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_46);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA145_41 = input.LA(1);

                         
                        int index145_41 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_41);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA145_44 = input.LA(1);

                         
                        int index145_44 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_44);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA145_21 = input.LA(1);

                         
                        int index145_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_21);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA145_36 = input.LA(1);

                         
                        int index145_36 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_36);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA145_31 = input.LA(1);

                         
                        int index145_31 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_31);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA145_47 = input.LA(1);

                         
                        int index145_47 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_47);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA145_55 = input.LA(1);

                         
                        int index145_55 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_55);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA145_40 = input.LA(1);

                         
                        int index145_40 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_40);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA145_32 = input.LA(1);

                         
                        int index145_32 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_32);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA145_53 = input.LA(1);

                         
                        int index145_53 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_53);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA145_29 = input.LA(1);

                         
                        int index145_29 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_29);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA145_54 = input.LA(1);

                         
                        int index145_54 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_54);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA145_52 = input.LA(1);

                         
                        int index145_52 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_52);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA145_26 = input.LA(1);

                         
                        int index145_26 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_26);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA145_24 = input.LA(1);

                         
                        int index145_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_24);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA145_39 = input.LA(1);

                         
                        int index145_39 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_39);
                        if ( s>=0 ) return s;
                        break;
                    case 23 : 
                        int LA145_28 = input.LA(1);

                         
                        int index145_28 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_28);
                        if ( s>=0 ) return s;
                        break;
                    case 24 : 
                        int LA145_45 = input.LA(1);

                         
                        int index145_45 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_45);
                        if ( s>=0 ) return s;
                        break;
                    case 25 : 
                        int LA145_57 = input.LA(1);

                         
                        int index145_57 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_57);
                        if ( s>=0 ) return s;
                        break;
                    case 26 : 
                        int LA145_34 = input.LA(1);

                         
                        int index145_34 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_34);
                        if ( s>=0 ) return s;
                        break;
                    case 27 : 
                        int LA145_35 = input.LA(1);

                         
                        int index145_35 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_35);
                        if ( s>=0 ) return s;
                        break;
                    case 28 : 
                        int LA145_58 = input.LA(1);

                         
                        int index145_58 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_58);
                        if ( s>=0 ) return s;
                        break;
                    case 29 : 
                        int LA145_50 = input.LA(1);

                         
                        int index145_50 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred370_AS3()) ) {s = 18;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_50);
                        if ( s>=0 ) return s;
                        break;
                    case 30 : 
                        int LA145_33 = input.LA(1);

                         
                        int index145_33 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_33);
                        if ( s>=0 ) return s;
                        break;
                    case 31 : 
                        int LA145_27 = input.LA(1);

                         
                        int index145_27 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_27);
                        if ( s>=0 ) return s;
                        break;
                    case 32 : 
                        int LA145_38 = input.LA(1);

                         
                        int index145_38 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_38);
                        if ( s>=0 ) return s;
                        break;
                    case 33 : 
                        int LA145_30 = input.LA(1);

                         
                        int index145_30 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_30);
                        if ( s>=0 ) return s;
                        break;
                    case 34 : 
                        int LA145_23 = input.LA(1);

                         
                        int index145_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_23);
                        if ( s>=0 ) return s;
                        break;
                    case 35 : 
                        int LA145_37 = input.LA(1);

                         
                        int index145_37 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred366_AS3()) ) {s = 14;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_37);
                        if ( s>=0 ) return s;
                        break;
                    case 36 : 
                        int LA145_42 = input.LA(1);

                         
                        int index145_42 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_42);
                        if ( s>=0 ) return s;
                        break;
                    case 37 : 
                        int LA145_20 = input.LA(1);

                         
                        int index145_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_20);
                        if ( s>=0 ) return s;
                        break;
                    case 38 : 
                        int LA145_25 = input.LA(1);

                         
                        int index145_25 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred365_AS3()) ) {s = 12;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_25);
                        if ( s>=0 ) return s;
                        break;
                    case 39 : 
                        int LA145_48 = input.LA(1);

                         
                        int index145_48 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred367_AS3()) ) {s = 5;}

                        else if ( (synpred371_AS3()) ) {s = 10;}

                         
                        input.seek(index145_48);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 145, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_set_in_booleanLiteral0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_numericLiteral0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_stringLiteral0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_REGULAR_EXPR_LITERAL_in_regularExpresionLiteral2566 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_identifierLiteral2576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_notQuiteReservedWord_in_identifierLiteral2580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_xmlNameLiteral2591 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_allKeywords_in_xmlNameLiteral2595 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_SUB_in_xmlNameLiteral2599 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_xmlNameLiteral2602 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_allKeywords_in_xmlNameLiteral2606 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_NULL_in_literal2619 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_booleanLiteral_in_literal2623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_numericLiteral_in_literal2627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_stringLiteral_in_literal2631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_regularExpresionLiteral_in_literal2635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlComment_in_xmlMarkup2649 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlCDATA_in_xmlMarkup2653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPI_in_xmlMarkup2657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_COMMENT_in_xmlComment2667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_CDATA_in_xmlCDATA2675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_PI_in_xmlPI2684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LCURLY_in_xmlExprEval2694 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_xmlExprEval2696 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_RCURLY_in_xmlExprEval2698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_allKeywords_in_xmlTextElement2708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_xmlTextElement2714 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_TEXT_in_xmlText2977 = new BitSet(new long[]{0xF7FFFFFFFFFFFFF2L,0x80033FFFFFFFFFB7L,0x0000000000042901L});
    public static final BitSet FOLLOW_xmlTextElement_in_xmlText2981 = new BitSet(new long[]{0xF7FFFFFFFFFFFFF2L,0x80033FFFFFFFFFB7L,0x0000000000042901L});
    public static final BitSet FOLLOW_xmlPropertyIdentifier_in_xmlPrimaryExpression2996 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlInitialiser_in_xmlPrimaryExpression3000 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlListInitialiser_in_xmlPrimaryExpression3004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlAttributeIdentifier_in_xmlPropertyIdentifier3017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlQualifiedIdentifier_in_xmlPropertyIdentifier3021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STAR_in_xmlPropertyIdentifier3025 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_AT_in_xmlAttributeIdentifier3036 = new BitSet(new long[]{0x83FFFFFFFFFFFFF0L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlPropertySelector_in_xmlAttributeIdentifier3039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlQualifiedIdentifier_in_xmlAttributeIdentifier3043 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_indexSuffix_in_xmlAttributeIdentifier3047 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlNameLiteral_in_xmlPropertySelector3060 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STAR_in_xmlPropertySelector3064 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPropertySelector_in_xmlQualifiedIdentifier3075 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_XML_NS_OP_in_xmlQualifiedIdentifier3077 = new BitSet(new long[]{0x83FFFFFFFFFFFFF0L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlPropertySelector_in_xmlQualifiedIdentifier3080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_indexSuffix_in_xmlQualifiedIdentifier3084 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlMarkup_in_xmlInitialiser3096 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlElement_in_xmlInitialiser3100 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LT_in_xmlElement3112 = new BitSet(new long[]{0x0BFFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlTagName_in_xmlElement3114 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000400000000010L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlAttributes_in_xmlElement3116 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000010L});
    public static final BitSet FOLLOW_XML_TEND_in_xmlElement3122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_xmlElement3126 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x8003BFFFFFFFFFBFL,0x000000000007A901L});
    public static final BitSet FOLLOW_xmlElementContent_in_xmlElement3128 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_XML_E_TEND_in_xmlElement3131 = new BitSet(new long[]{0x0BFFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlTagName_in_xmlElement3133 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_GT_in_xmlElement3135 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlAttribute_in_xmlAttributes3148 = new BitSet(new long[]{0x03FFFFFFFFFFFFF2L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlExprEval_in_xmlTagName3160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlNameLiteral_in_xmlTagName3164 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlNameLiteral_in_xmlAttribute3178 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_ASSIGN_in_xmlAttribute3180 = new BitSet(new long[]{0x0800000000000000L,0x8000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_xmlExprEval_in_xmlAttribute3183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_stringLiteral_in_xmlAttribute3187 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlElementContentHelper_in_xmlElementContent3199 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF2L,0x80033FFFFFFFFFBFL,0x000000000007A901L});
    public static final BitSet FOLLOW_xmlExprEval_in_xmlElementContentHelper3211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlMarkup_in_xmlElementContentHelper3215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlElement_in_xmlElementContentHelper3219 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlText_in_xmlElementContentHelper3223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_LS_STD_in_xmlListInitialiser3234 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x800B3FFFFFFFFFBFL,0x000000000007A901L});
    public static final BitSet FOLLOW_xmlElementContent_in_xmlListInitialiser3236 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
    public static final BitSet FOLLOW_XML_LS_END_in_xmlListInitialiser3239 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_semic3257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EOF_in_semic3261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RCURLY_in_semic3265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_packageDeclaration_in_fileContents3283 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_packageElement_in_fileContents3286 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_EOF_in_fileContents3294 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PACKAGE_in_packageDeclaration3307 = new BitSet(new long[]{0x0800400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_packageDeclaration3311 = new BitSet(new long[]{0x0800000000000000L});
    public static final BitSet FOLLOW_LCURLY_in_packageDeclaration3315 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_packageElement_in_packageDeclaration3317 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_RCURLY_in_packageDeclaration3320 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_mxmlEmbedded3335 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_functionDeclaration_in_mxmlEmbedded3339 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_mxmlEmbedded3343 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_directive_in_mxmlEmbedded3347 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_mxmlEmbedded3351 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_EOF_in_mxmlEmbedded3357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classDeclaration_in_packageElement3368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_packageElement3372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_packageElement3377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionDeclaration_in_packageElement3382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_packageElement3387 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_packageElement3392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directive_in_packageElement3397 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IMPORT_in_importDeclaration3408 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_importDeclaration3411 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_importDeclaration3414 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_STAR_in_importDeclaration3416 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_importDeclaration3420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bindingDecl_in_directive3438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_includeDirective_in_directive3442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_useNamespaceDirective_in_directive3446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_importDeclaration_in_directive3450 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_defaultXMLNamespaceDirective_in_directive3456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_xmlKeyword3471 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DEFAULT_in_defaultXMLNamespaceDirective3484 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlKeyword_in_defaultXMLNamespaceDirective3486 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_NAMESPACE_in_defaultXMLNamespaceDirective3488 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_ASSIGN_in_defaultXMLNamespaceDirective3490 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_defaultXMLNamespaceDirective3492 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_defaultXMLNamespaceDirective3494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACK_in_bindingDecl3506 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_bindingDecl3509 = new BitSet(new long[]{0x2000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_LPAREN_in_bindingDecl3512 = new BitSet(new long[]{0xEBFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bindingDeclArg_in_bindingDecl3515 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_bindingDecl3518 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bindingDeclArg_in_bindingDecl3520 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_RPAREN_in_bindingDecl3526 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_RBRACK_in_bindingDecl3530 = new BitSet(new long[]{0x0400000000000002L});
    public static final BitSet FOLLOW_SEMI_in_bindingDecl3532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INCLUDE_in_includeDirective3544 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_stringLiteral_in_includeDirective3546 = new BitSet(new long[]{0x1400000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_includeDirective3548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_bindingDeclArg3577 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_ASSIGN_in_bindingDeclArg3579 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_bindingDeclArg3583 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_interfaceDeclaration3599 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_INTERFACE_in_interfaceDeclaration3602 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_interfaceDeclaration3604 = new BitSet(new long[]{0x0800000000008000L});
    public static final BitSet FOLLOW_interfaceExtends_in_interfaceDeclaration3606 = new BitSet(new long[]{0x0800000000008000L});
    public static final BitSet FOLLOW_interfaceBody_in_interfaceDeclaration3609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EXTENDS_in_interfaceExtends3636 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_typeList_in_interfaceExtends3639 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LCURLY_in_interfaceBody3650 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_interfaceElement_in_interfaceBody3653 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_RCURLY_in_interfaceBody3656 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_classDeclaration3667 = new BitSet(new long[]{0x0000000000000100L});
    public static final BitSet FOLLOW_CLASS_in_classDeclaration3670 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_classDeclaration3672 = new BitSet(new long[]{0x0800000000208000L});
    public static final BitSet FOLLOW_classExtends_in_classDeclaration3674 = new BitSet(new long[]{0x0800000000208000L});
    public static final BitSet FOLLOW_classImplements_in_classDeclaration3677 = new BitSet(new long[]{0x0800000000208000L});
    public static final BitSet FOLLOW_classBody_in_classDeclaration3680 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EXTENDS_in_classExtends3711 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_classExtends3714 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IMPLEMENTS_in_classImplements3724 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_typeList_in_classImplements3727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LCURLY_in_classBody3738 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_classBodyElement_in_classBody3741 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_RCURLY_in_classBody3744 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_classBodyElement3759 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionDeclaration_in_classBodyElement3764 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_classBodyElement3769 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_classBodyElement3775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directive_in_classBodyElement3780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_interfaceElement3792 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_interfaceElement3797 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_interfaceElement3803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directive_in_interfaceElement3808 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_interfaceFunctionDeclaration3826 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_FUNCTION_in_interfaceFunctionDeclaration3829 = new BitSet(new long[]{0x000C000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_accessorModifier_in_interfaceFunctionDeclaration3831 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_interfaceFunctionDeclaration3834 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_formalParameterList_in_interfaceFunctionDeclaration3836 = new BitSet(new long[]{0x1400000000000000L,0x0000000020000002L});
    public static final BitSet FOLLOW_COLON_in_interfaceFunctionDeclaration3839 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_interfaceFunctionDeclaration3841 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_interfaceFunctionDeclaration3846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_interfaceFunctionDeclaration3875 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_FUNCTION_in_interfaceFunctionDeclaration3878 = new BitSet(new long[]{0x001C000000000000L});
    public static final BitSet FOLLOW_accessorModifier_in_interfaceFunctionDeclaration3880 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_NAMESPACE_in_interfaceFunctionDeclaration3883 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_formalParameterList_in_interfaceFunctionDeclaration3885 = new BitSet(new long[]{0x1400000000000000L,0x0000000020000002L});
    public static final BitSet FOLLOW_COLON_in_interfaceFunctionDeclaration3888 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_interfaceFunctionDeclaration3890 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_interfaceFunctionDeclaration3895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_propertyDeclaration3934 = new BitSet(new long[]{0x03D0200714000200L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableStatement_in_propertyDeclaration3940 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantVarStatement_in_propertyDeclaration3954 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_namespaceDirective_in_propertyDeclaration3968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_functionDeclaration3996 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration3999 = new BitSet(new long[]{0x000C000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_accessorModifier_in_functionDeclaration4001 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_functionDeclaration4004 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration4006 = new BitSet(new long[]{0x0800000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_functionDeclaration4009 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_functionDeclaration4011 = new BitSet(new long[]{0x0800000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_functionBody_in_functionDeclaration4016 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_functionDeclaration4047 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration4050 = new BitSet(new long[]{0x001C000000000000L});
    public static final BitSet FOLLOW_accessorModifier_in_functionDeclaration4052 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_NAMESPACE_in_functionDeclaration4055 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration4057 = new BitSet(new long[]{0x0800000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_functionDeclaration4060 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_functionDeclaration4062 = new BitSet(new long[]{0x0800000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_functionBody_in_functionDeclaration4067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_accessorModifier0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FUNCTION_in_functionExpression4118 = new BitSet(new long[]{0x2000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_functionExpression4121 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_formalParameterList_in_functionExpression4125 = new BitSet(new long[]{0x0800000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_functionExpression4128 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_functionExpression4130 = new BitSet(new long[]{0x0800000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_functionBody_in_functionExpression4134 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_formalParameterList4145 = new BitSet(new long[]{0x43FFFFFFFFFFFFF0L,0x0000100000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_formalParameterListInner_in_formalParameterList4147 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_formalParameterList4150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableDeclaration_in_formalParameterListInner4171 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_formalParameterListInner4174 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclaration_in_formalParameterListInner4176 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_formalParameterListInner4181 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000100000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_formalEllipsisParameter_in_formalParameterListInner4183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_formalEllipsisParameter_in_formalParameterListInner4191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ELLIPSIS_in_formalEllipsisParameter4201 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableIdentifierDecl_in_formalEllipsisParameter4203 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LCURLY_in_functionBody4222 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_functionBody4226 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_functionDeclaration_in_functionBody4229 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_RCURLY_in_functionBody4233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifier_in_memberModifiers4247 = new BitSet(new long[]{0x03C0000714000002L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_set_in_memberModifier4262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_blockStatement_in_statement4324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directive_in_statement4328 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_namespaceDirective_in_statement4332 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_statement4336 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_statement4338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantVarStatement_in_statement4344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tryStatement_in_statement4348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_labelledStatement_in_statement4352 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switchStatement_in_statement4356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_withStatement_in_statement4362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_returnStatement_in_statement4366 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_breakStatement_in_statement4370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_continueStatement_in_statement4374 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forStatement_in_statement4380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forInStatement_in_statement4384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forEachInStatement_in_statement4388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_doWhileStatement_in_statement4392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_whileStatement_in_statement4398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ifStatement_in_statement4402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_emptyStatement_in_statement4406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableStatement_in_statement4410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_throwStatement_in_statement4414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LCURLY_in_blockStatement4431 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_blockStatement4433 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_RCURLY_in_blockStatement4436 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THROW_in_throwStatement4448 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_throwStatement4450 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_throwStatement4452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONST_in_constantVarStatement4464 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclarationList_in_constantVarStatement4466 = new BitSet(new long[]{0x0400000000000002L});
    public static final BitSet FOLLOW_SEMI_in_constantVarStatement4469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_USE_in_useNamespaceDirective4494 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_NAMESPACE_in_useNamespaceDirective4496 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_useNamespaceDirective4498 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000006L});
    public static final BitSet FOLLOW_COMMA_in_useNamespaceDirective4501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_useNamespaceDirective4503 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000006L});
    public static final BitSet FOLLOW_semic_in_useNamespaceDirective4507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NAMESPACE_in_namespaceDirective4538 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_namespaceDirective4540 = new BitSet(new long[]{0x1400000000000000L,0x0000000040000002L});
    public static final BitSet FOLLOW_namespaceDirectiveAssignment_in_namespaceDirective4542 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_namespaceDirective4545 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASSIGN_in_namespaceDirectiveAssignment4567 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_stringLiteral_in_namespaceDirectiveAssignment4569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TRY_in_tryStatement4592 = new BitSet(new long[]{0x0800000000000000L});
    public static final BitSet FOLLOW_blockStatement_in_tryStatement4594 = new BitSet(new long[]{0x0000000000020080L});
    public static final BitSet FOLLOW_catchClause_in_tryStatement4597 = new BitSet(new long[]{0x0000000000020080L});
    public static final BitSet FOLLOW_finallyClause_in_tryStatement4600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catchClause_in_tryStatement4604 = new BitSet(new long[]{0x0000000000000082L});
    public static final BitSet FOLLOW_finallyClause_in_tryStatement4609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CATCH_in_catchClause4621 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_LPAREN_in_catchClause4623 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableIdentifierDecl_in_catchClause4625 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_catchClause4627 = new BitSet(new long[]{0x0800000000000000L});
    public static final BitSet FOLLOW_blockStatement_in_catchClause4629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FINALLY_in_finallyClause4640 = new BitSet(new long[]{0x0800000000000000L});
    public static final BitSet FOLLOW_blockStatement_in_finallyClause4642 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_labelledStatement4655 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_labelledStatement4657 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_labelledStatement4659 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SWITCH_in_switchStatement4672 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_parExpression_in_switchStatement4674 = new BitSet(new long[]{0x0800000000000000L});
    public static final BitSet FOLLOW_LCURLY_in_switchStatement4676 = new BitSet(new long[]{0x1000000000000840L});
    public static final BitSet FOLLOW_switchBlockStatementGroup_in_switchStatement4678 = new BitSet(new long[]{0x1000000000000840L});
    public static final BitSet FOLLOW_RCURLY_in_switchStatement4681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switchLabel_in_switchBlockStatementGroup4697 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_switchBlockStatementGroup4699 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_breakStatement_in_switchBlockStatementGroup4702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CASE_in_switchLabel4714 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_switchLabel4716 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_switchLabel4718 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DEFAULT_in_switchLabel4722 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_switchLabel4724 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WITH_in_withStatement4738 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_LPAREN_in_withStatement4740 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_withStatement4742 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_withStatement4744 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_withStatement4746 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RETURN_in_returnStatement4759 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x800600000303380AL,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_returnStatement4762 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_returnStatement4766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAK_in_breakStatement4780 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_breakStatement4783 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_breakStatement4787 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONTINUE_in_continueStatement4800 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_continueStatement4803 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_continueStatement4807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_forStatement4820 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_LPAREN_in_forStatement4822 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x800600000303380AL,0x000000000003A909L});
    public static final BitSet FOLLOW_forControl_in_forStatement4824 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_forStatement4826 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_forStatement4828 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_forInStatement4839 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_LPAREN_in_forInStatement4841 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_forInControl_in_forInStatement4843 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_forInStatement4845 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_forInStatement4847 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_forEachInStatement4858 = new BitSet(new long[]{0x0002000000000000L});
    public static final BitSet FOLLOW_EACH_in_forEachInStatement4860 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_LPAREN_in_forEachInStatement4862 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_forInControl_in_forEachInStatement4864 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_forEachInStatement4866 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_forEachInStatement4868 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forInit_in_forControl4887 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_forControl4890 = new BitSet(new long[]{0xBFFFFFFFFFFFFFF0L,0x800600000303380AL,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_forControl4892 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_forControl4895 = new BitSet(new long[]{0xABFFFFFFFFFFFFF2L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_forUpdate_in_forControl4897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forInDecl_in_forInControl4917 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_IN_in_forInControl4919 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_forInControl4921 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_leftHandSideExpression_in_forInDecl4932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR_in_forInDecl4936 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forInDecl4938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableDeclarationNoInList_in_forInit4948 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expressionNoIn_in_forInit4952 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_forUpdate4963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DO_in_doWhileStatement4977 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_doWhileStatement4979 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_WHILE_in_doWhileStatement4981 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_parExpression_in_doWhileStatement4983 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_doWhileStatement4985 = new BitSet(new long[]{0x0400000000000002L});
    public static final BitSet FOLLOW_SEMI_in_doWhileStatement4988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_whileStatement5003 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_parExpression_in_whileStatement5005 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_whileStatement5007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_ifStatement5020 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_parExpression_in_ifStatement5022 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_ifStatement5024 = new BitSet(new long[]{0x0000000000004002L});
    public static final BitSet FOLLOW_ELSE_in_ifStatement5034 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_ifStatement5036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_emptyStatement5052 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_variableStatement5067 = new BitSet(new long[]{0x0000200000000000L});
    public static final BitSet FOLLOW_VAR_in_variableStatement5071 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclarationList_in_variableStatement5073 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_variableStatement5075 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableDeclaration_in_variableDeclarationList5100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_variableDeclarationList5103 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclaration_in_variableDeclarationList5105 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_VAR_in_variableDeclarationNoInList5119 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclarationNoIn_in_variableDeclarationNoInList5123 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_variableDeclarationNoInList5126 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_variableDeclarationNoIn_in_variableDeclarationNoInList5128 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_variableIdentifierDecl_in_variableDeclaration5141 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
    public static final BitSet FOLLOW_variableDelarationAssignment_in_variableDeclaration5143 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASSIGN_in_variableDelarationAssignment5164 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_variableDelarationAssignment5166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableIdentifierDecl_in_variableDeclarationNoIn5186 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5189 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifierLiteral_in_variableIdentifierDecl5204 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_variableIdentifierDecl5207 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_variableIdentifierDecl5209 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualifiedName_in_type5238 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STAR_in_type5242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VOID_in_type5246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_in_typeList5256 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_typeList5259 = new BitSet(new long[]{0x0000400000000000L,0x0000000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_type_in_typeList5261 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_standardQualifiedName5276 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_standardQualifiedName5280 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_standardQualifiedName5283 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_standardQualifiedName_in_qualifiedName5300 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_typePostfixSyntax_in_qualifiedName5303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_typePostfixSyntax5318 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_LT_in_typePostfixSyntax5320 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_standardQualifiedName_in_typePostfixSyntax5322 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_GT_in_typePostfixSyntax5324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedIdentifier5336 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_parExpression5349 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_parExpression5351 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_parExpression5353 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assignmentExpression_in_expression5364 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_expression5367 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_expression5369 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5382 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_expressionNoIn5385 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5387 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_leftHandSideExpression_in_assignmentExpression5401 = new BitSet(new long[]{0x0000000000000000L,0x00000FFE40000000L});
    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression5403 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression5405 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression5409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn5420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_leftHandSideExpression_in_assignmentExpressionNoIn5424 = new BitSet(new long[]{0x0000000000000000L,0x00000FFE40000000L});
    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn5426 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn5428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assignmentOperator_int_in_assignmentOperator5439 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_assignmentOperator_int0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression5508 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
    public static final BitSet FOLLOW_QUE_in_conditionalExpression5511 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression5513 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_conditionalExpression5515 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression5517 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn5530 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn5533 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpressionNoIn5535 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn5537 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpressionNoIn5539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression5553 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_LOR_in_logicalORExpression5556 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression5558 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn5572 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn5575 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn5577 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression5590 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
    public static final BitSet FOLLOW_LAND_in_logicalANDExpression5593 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression5595 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn5608 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn5611 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn5613 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression5627 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
    public static final BitSet FOLLOW_OR_in_bitwiseORExpression5630 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression5632 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn5645 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn5648 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn5650 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression5663 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression5666 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression5668 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn5681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn5684 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn5686 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression5699 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression5702 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression5704 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn5717 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn5720 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn5722 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression5736 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000780L});
    public static final BitSet FOLLOW_set_in_equalityExpression5739 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression5749 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000780L});
    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn5762 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000780L});
    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn5765 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn5775 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000780L});
    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression5789 = new BitSet(new long[]{0x0000000009800012L,0x0000000000000038L});
    public static final BitSet FOLLOW_GT_in_relationalExpression5797 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000043033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_ASSIGN_in_relationalExpression5802 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_set_in_relationalExpression5811 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression5826 = new BitSet(new long[]{0x0000000009800012L,0x0000000000000038L});
    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn5841 = new BitSet(new long[]{0x0000000009000012L,0x0000000000000038L});
    public static final BitSet FOLLOW_GT_in_relationalExpressionNoIn5849 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000043033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_ASSIGN_in_relationalExpressionNoIn5854 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn5863 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn5876 = new BitSet(new long[]{0x0000000009000012L,0x0000000000000038L});
    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression5892 = new BitSet(new long[]{0x0000000000000002L,0x00000000001C0000L});
    public static final BitSet FOLLOW_set_in_shiftExpression5895 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression5903 = new BitSet(new long[]{0x0000000000000002L,0x00000000001C0000L});
    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression5917 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
    public static final BitSet FOLLOW_set_in_additiveExpression5920 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression5926 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression5940 = new BitSet(new long[]{0x0000000000000002L,0x000000000000E000L});
    public static final BitSet FOLLOW_set_in_multiplicativeExpression5943 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression5950 = new BitSet(new long[]{0x0000000000000002L,0x000000000000E000L});
    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression5964 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_unaryOp_in_unaryExpression5968 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression5970 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_unaryOp5980 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression6026 = new BitSet(new long[]{0x0000000000000002L,0x0000000000030000L});
    public static final BitSet FOLLOW_postfixOp_in_postfixExpression6028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_postfixOp6040 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_primaryExpression_in_memberExpression6058 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionExpression_in_memberExpression6062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_newExpression_in_memberExpression6066 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NEW_in_newExpression6077 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_primaryExpression_in_newExpression6079 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression6091 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression6094 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression6100 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_leftHandSideExpression6102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression6104 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression6112 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0002000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_eitherIdentifier_in_leftHandSideExpression6115 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_XML_NS_OP_in_leftHandSideExpression6117 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0002000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_eitherIdentifier_in_leftHandSideExpression6121 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_XML_ELLIPSIS_in_leftHandSideExpression6127 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0002000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_eitherIdentifier_in_leftHandSideExpression6129 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression6135 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_parExpression_in_leftHandSideExpression6137 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_typePostfixSyntax_in_leftHandSideExpression6143 = new BitSet(new long[]{0xA000000000000002L,0x0000200000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_eitherIdentifier6159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPropertyIdentifier_in_eitherIdentifier6163 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_allKeywords_in_eitherIdentifier6167 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_notQuiteReservedWord6178 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_reservedWord_in_allKeywords6228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_notQuiteReservedWord_in_allKeywords6232 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_reservedWord6244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_arguments6449 = new BitSet(new long[]{0xEBFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_arguments6452 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_arguments6455 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_arguments6457 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_RPAREN_in_arguments6463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_indexSuffix_in_suffix6476 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyReferenceSuffix_in_suffix6480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACK_in_indexSuffix6493 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_indexSuffix6495 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_RBRACK_in_indexSuffix6497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_propertyReferenceSuffix6508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_propertyReferenceSuffix6510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_propertyReferenceSuffix6514 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0002000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_xmlPropertyIdentifier_in_propertyReferenceSuffix6516 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_propertyReferenceSuffix6522 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_primaryExpressionHelper_in_primaryExpression6536 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THIS_in_primaryExpressionHelper6549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUPER_in_primaryExpressionHelper6553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_literal_in_primaryExpressionHelper6557 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpressionHelper6561 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_objectLiteral_in_primaryExpressionHelper6567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifierLiteral_in_primaryExpressionHelper6573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPrimaryExpression_in_primaryExpressionHelper6579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parExpression_in_primaryExpressionHelper6584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LCURLY_in_objectLiteral6597 = new BitSet(new long[]{0x13FFFFFFFFFFFFF0L,0x8000000000000000L,0x0000000000002901L});
    public static final BitSet FOLLOW_propertyNameAndValueList_in_objectLiteral6599 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_RCURLY_in_objectLiteral6602 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyNameAndValue_in_propertyNameAndValueList6614 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_propertyNameAndValueList6617 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x8000000000000000L,0x0000000000002901L});
    public static final BitSet FOLLOW_propertyNameAndValue_in_propertyNameAndValueList6619 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_propertyName_in_propertyNameAndValue6632 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_COLON_in_propertyNameAndValue6634 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_propertyNameAndValue6636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifierLiteral_in_propertyName6647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_stringLiteral_in_propertyName6651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_numericLiteral_in_propertyName6655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral6668 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033809L,0x000000000003A909L});
    public static final BitSet FOLLOW_elementList_in_arrayLiteral6670 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral6673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assignmentExpression_in_elementList6685 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_elementList6688 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_elementList6690 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
    public static final BitSet FOLLOW_COMMA_in_elementList6697 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUB_in_synpred7_AS32599 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred7_AS32602 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_allKeywords_in_synpred7_AS32606 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_XML_TEXT_in_synpred71_AS32977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlTextElement_in_synpred72_AS32981 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlQualifiedIdentifier_in_synpred76_AS33021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPropertySelector_in_synpred77_AS33039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlQualifiedIdentifier_in_synpred78_AS33043 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_synpred100_AS33335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionDeclaration_in_synpred101_AS33339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_synpred102_AS33343 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directive_in_synpred103_AS33347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_synpred104_AS33351 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classDeclaration_in_synpred106_AS33368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_synpred107_AS33372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_synpred108_AS33377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionDeclaration_in_synpred109_AS33382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_synpred110_AS33387 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_synpred111_AS33392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_synpred120_AS33532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_synpred121_AS33548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred122_AS33577 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_ASSIGN_in_synpred122_AS33579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_synpred130_AS33759 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionDeclaration_in_synpred131_AS33764 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_synpred132_AS33769 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_synpred133_AS33775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_propertyDeclaration_in_synpred134_AS33792 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceFunctionDeclaration_in_synpred135_AS33797 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_synpred136_AS33803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifiers_in_synpred144_AS33934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_synpred161_AS34226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_functionDeclaration_in_synpred162_AS34229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_memberModifier_in_synpred163_AS34247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_blockStatement_in_synpred173_AS34324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directive_in_synpred174_AS34328 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_namespaceDirective_in_synpred175_AS34332 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_synpred176_AS34336 = new BitSet(new long[]{0x1400000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_semic_in_synpred176_AS34338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantVarStatement_in_synpred177_AS34344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tryStatement_in_synpred178_AS34348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_labelledStatement_in_synpred179_AS34352 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switchStatement_in_synpred180_AS34356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_withStatement_in_synpred181_AS34362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_returnStatement_in_synpred182_AS34366 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_breakStatement_in_synpred183_AS34370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_continueStatement_in_synpred184_AS34374 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forStatement_in_synpred185_AS34380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forInStatement_in_synpred186_AS34384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forEachInStatement_in_synpred187_AS34388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_doWhileStatement_in_synpred188_AS34392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_whileStatement_in_synpred189_AS34398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ifStatement_in_synpred190_AS34402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableStatement_in_synpred192_AS34410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_synpred194_AS34469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catchClause_in_synpred198_AS34597 = new BitSet(new long[]{0x0000000000020080L});
    public static final BitSet FOLLOW_finallyClause_in_synpred198_AS34600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catchClause_in_synpred200_AS34604 = new BitSet(new long[]{0x0000000000000082L});
    public static final BitSet FOLLOW_statement_in_synpred202_AS34699 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variableDeclarationNoInList_in_synpred212_AS34948 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_synpred213_AS34988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ELSE_in_synpred214_AS35034 = new BitSet(new long[]{0xAFFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_statement_in_synpred214_AS35036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COMMA_in_synpred227_AS35367 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_synpred227_AS35369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_leftHandSideExpression_in_synpred229_AS35401 = new BitSet(new long[]{0x0000000000000000L,0x00000FFE40000000L});
    public static final BitSet FOLLOW_assignmentOperator_in_synpred229_AS35403 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_assignmentExpression_in_synpred229_AS35405 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_synpred230_AS35420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GT_in_synpred269_AS35797 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000043033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_ASSIGN_in_synpred269_AS35802 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_set_in_synpred269_AS35811 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_shiftExpression_in_synpred269_AS35826 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred281_AS35920 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_multiplicativeExpression_in_synpred281_AS35926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred284_AS35943 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_unaryExpression_in_synpred284_AS35950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_postfixOp_in_synpred294_AS36028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arguments_in_synpred298_AS36094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACK_in_synpred299_AS36100 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000003033808L,0x000000000003A909L});
    public static final BitSet FOLLOW_expression_in_synpred299_AS36102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_RBRACK_in_synpred299_AS36104 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eitherIdentifier_in_synpred300_AS36115 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_XML_NS_OP_in_synpred300_AS36117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_synpred301_AS36112 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0002000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_eitherIdentifier_in_synpred301_AS36115 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_XML_NS_OP_in_synpred301_AS36117 = new BitSet(new long[]{0x03FFFFFFFFFFFFF0L,0x0002000000002000L,0x0000000000002000L});
    public static final BitSet FOLLOW_eitherIdentifier_in_synpred301_AS36121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_synpred303_AS36135 = new BitSet(new long[]{0xABFFFFFFFFFFFFF0L,0x8006000000002008L,0x000000000003A909L});
    public static final BitSet FOLLOW_parExpression_in_synpred303_AS36137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typePostfixSyntax_in_synpred304_AS36143 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred305_AS36159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPropertyIdentifier_in_synpred306_AS36163 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THIS_in_synpred365_AS36549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUPER_in_synpred366_AS36553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_literal_in_synpred367_AS36557 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identifierLiteral_in_synpred370_AS36573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_xmlPrimaryExpression_in_synpred371_AS36579 = new BitSet(new long[]{0x0000000000000002L});

}