All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.gumtreediff.gen.antlr3.php.PhpParser Maven / Gradle / Ivy

// $ANTLR 3.5.2 com/github/gumtreediff/gen/antlr3/php/Php.g 2019-02-26 10:24:37
 package com.github.gumtreediff.gen.antlr3.php; 

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.*;


@SuppressWarnings("all")
public class PhpParser extends Parser {
	public static final String[] tokenNames = new String[] {
		"", "", "", "", "Abstract", "AccessModifier", 
		"Ampersand", "And", "Apply", "Array", "ArrayAssign", "AsignmentOperator", 
		"Asterisk", "Bang", "Block", "BodyString", "Boolean", "Break", "Case", 
		"Cast", "Class", "ClassDefinition", "ClassMember", "Clone", "CloseBrace", 
		"CloseCurlyBrace", "CloseSquareBrace", "Colon", "Comma", "ComparisionOperator", 
		"Const", "Continue", "DNum", "Decimal", "Default", "Digits", "Do", "Dollar", 
		"Dot", "DoubleQuotedString", "Echo", "Else", "ElseIf", "Empty", "Eol", 
		"EqualityOperator", "Equals", "EscapeCharector", "Exponent_DNum", "Extends", 
		"Field", "FirstBodyString", "For", "ForCondition", "ForInit", "ForUpdate", 
		"Foreach", "Forwardslash", "Function", "Global", "HereDoc", "HereDocContents", 
		"Hexadecimal", "If", "IfExpression", "Implements", "IncrementOperator", 
		"InstanceMember", "Instanceof", "Integer", "Interface", "Label", "LogicalAnd", 
		"LogicalOr", "Member", "Method", "Minus", "Modifiers", "MultilineComment", 
		"New", "Octal", "OpenBrace", "OpenCurlyBrace", "OpenSquareBrace", "Or", 
		"Params", "Percent", "Pipe", "Plus", "Postfix", "Prefix", "PrimitiveType", 
		"QuestionMark", "Real", "Reference", "RequireOperator", "Return", "SemiColon", 
		"ShiftOperator", "SingleQuotedString", "SinglelineComment", "Static", 
		"SuppressWarnings", "Switch", "Throw", "Tilde", "UnixComment", "UnquotedString", 
		"Var", "While", "WhiteSpace", "Xor", "'as'"
	};
	public static final int EOF=-1;
	public static final int T__112=112;
	public static final int Abstract=4;
	public static final int AccessModifier=5;
	public static final int Ampersand=6;
	public static final int And=7;
	public static final int Apply=8;
	public static final int Array=9;
	public static final int ArrayAssign=10;
	public static final int AsignmentOperator=11;
	public static final int Asterisk=12;
	public static final int Bang=13;
	public static final int Block=14;
	public static final int BodyString=15;
	public static final int Boolean=16;
	public static final int Break=17;
	public static final int Case=18;
	public static final int Cast=19;
	public static final int Class=20;
	public static final int ClassDefinition=21;
	public static final int ClassMember=22;
	public static final int Clone=23;
	public static final int CloseBrace=24;
	public static final int CloseCurlyBrace=25;
	public static final int CloseSquareBrace=26;
	public static final int Colon=27;
	public static final int Comma=28;
	public static final int ComparisionOperator=29;
	public static final int Const=30;
	public static final int Continue=31;
	public static final int DNum=32;
	public static final int Decimal=33;
	public static final int Default=34;
	public static final int Digits=35;
	public static final int Do=36;
	public static final int Dollar=37;
	public static final int Dot=38;
	public static final int DoubleQuotedString=39;
	public static final int Echo=40;
	public static final int Else=41;
	public static final int ElseIf=42;
	public static final int Empty=43;
	public static final int Eol=44;
	public static final int EqualityOperator=45;
	public static final int Equals=46;
	public static final int EscapeCharector=47;
	public static final int Exponent_DNum=48;
	public static final int Extends=49;
	public static final int Field=50;
	public static final int FirstBodyString=51;
	public static final int For=52;
	public static final int ForCondition=53;
	public static final int ForInit=54;
	public static final int ForUpdate=55;
	public static final int Foreach=56;
	public static final int Forwardslash=57;
	public static final int Function=58;
	public static final int Global=59;
	public static final int HereDoc=60;
	public static final int HereDocContents=61;
	public static final int Hexadecimal=62;
	public static final int If=63;
	public static final int IfExpression=64;
	public static final int Implements=65;
	public static final int IncrementOperator=66;
	public static final int InstanceMember=67;
	public static final int Instanceof=68;
	public static final int Integer=69;
	public static final int Interface=70;
	public static final int Label=71;
	public static final int LogicalAnd=72;
	public static final int LogicalOr=73;
	public static final int Member=74;
	public static final int Method=75;
	public static final int Minus=76;
	public static final int Modifiers=77;
	public static final int MultilineComment=78;
	public static final int New=79;
	public static final int Octal=80;
	public static final int OpenBrace=81;
	public static final int OpenCurlyBrace=82;
	public static final int OpenSquareBrace=83;
	public static final int Or=84;
	public static final int Params=85;
	public static final int Percent=86;
	public static final int Pipe=87;
	public static final int Plus=88;
	public static final int Postfix=89;
	public static final int Prefix=90;
	public static final int PrimitiveType=91;
	public static final int QuestionMark=92;
	public static final int Real=93;
	public static final int Reference=94;
	public static final int RequireOperator=95;
	public static final int Return=96;
	public static final int SemiColon=97;
	public static final int ShiftOperator=98;
	public static final int SingleQuotedString=99;
	public static final int SinglelineComment=100;
	public static final int Static=101;
	public static final int SuppressWarnings=102;
	public static final int Switch=103;
	public static final int Throw=104;
	public static final int Tilde=105;
	public static final int UnixComment=106;
	public static final int UnquotedString=107;
	public static final int Var=108;
	public static final int While=109;
	public static final int WhiteSpace=110;
	public static final int Xor=111;

	// delegates
	public Parser[] getDelegates() {
		return new Parser[] {};
	}

	// delegators


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


	}

	protected TreeAdaptor adaptor = new CommonTreeAdaptor();

	public void setTreeAdaptor(TreeAdaptor adaptor) {
		this.adaptor = adaptor;
	}
	public TreeAdaptor getTreeAdaptor() {
		return adaptor;
	}
	@Override public String[] getTokenNames() { return PhpParser.tokenNames; }
	@Override public String getGrammarFileName() { return "com/github/gumtreediff/gen/antlr3/php/Php.g"; }


	  public void display_next_tokens(){
	    System.err.print("Allowed tokens: ");
	    for(int next: next_tokens())
	      System.err.print(tokenNames[next]);
	    System.err.println("");
	  }
	  public int[] next_tokens(){
	    return state.following[state._fsp].toArray();
	  }


	public static class prog_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "prog"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:143:1: prog : ( statement )* ;
	public final PhpParser.prog_return prog() throws RecognitionException {
		PhpParser.prog_return retval = new PhpParser.prog_return();
		retval.start = input.LT(1);
		int prog_StartIndex = input.index();

		CommonTree root_0 = null;

		ParserRuleReturnScope statement1 =null;


		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:143:6: ( ( statement )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:143:8: ( statement )*
			{
			root_0 = (CommonTree)adaptor.nil();


			// com/github/gumtreediff/gen/antlr3/php/Php.g:143:8: ( statement )*
			loop1:
			while (true) {
				int alt1=2;
				int LA1_0 = input.LA(1);
				if ( (LA1_0==Abstract||LA1_0==Ampersand||LA1_0==Array||LA1_0==Bang||(LA1_0 >= BodyString && LA1_0 <= Break)||LA1_0==Class||LA1_0==Clone||LA1_0==Continue||(LA1_0 >= Do && LA1_0 <= Dollar)||(LA1_0 >= DoubleQuotedString && LA1_0 <= Echo)||LA1_0==For||LA1_0==Foreach||(LA1_0 >= Function && LA1_0 <= HereDoc)||LA1_0==If||LA1_0==IncrementOperator||(LA1_0 >= Integer && LA1_0 <= Interface)||LA1_0==Minus||LA1_0==New||(LA1_0 >= OpenBrace && LA1_0 <= OpenCurlyBrace)||LA1_0==Real||(LA1_0 >= RequireOperator && LA1_0 <= Return)||LA1_0==SingleQuotedString||(LA1_0 >= Static && LA1_0 <= Tilde)||LA1_0==UnquotedString||LA1_0==While) ) {
					alt1=1;
				}

				switch (alt1) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:143:8: statement
					{
					pushFollow(FOLLOW_statement_in_prog899);
					statement1=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, statement1.getTree());

					}
					break;

				default :
					break loop1;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 1, prog_StartIndex); }

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


	public static class statement_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "statement"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:145:1: statement : ( ( simpleStatement )? BodyString | '{' statement '}' -> statement | bracketedBlock | classDefinition | interfaceDefinition | complexStatement | simpleStatement ';' !);
	public final PhpParser.statement_return statement() throws RecognitionException {
		PhpParser.statement_return retval = new PhpParser.statement_return();
		retval.start = input.LT(1);
		int statement_StartIndex = input.index();

		CommonTree root_0 = null;

		Token BodyString3=null;
		Token char_literal4=null;
		Token char_literal6=null;
		Token char_literal12=null;
		ParserRuleReturnScope simpleStatement2 =null;
		ParserRuleReturnScope statement5 =null;
		ParserRuleReturnScope bracketedBlock7 =null;
		ParserRuleReturnScope classDefinition8 =null;
		ParserRuleReturnScope interfaceDefinition9 =null;
		ParserRuleReturnScope complexStatement10 =null;
		ParserRuleReturnScope simpleStatement11 =null;

		CommonTree BodyString3_tree=null;
		CommonTree char_literal4_tree=null;
		CommonTree char_literal6_tree=null;
		CommonTree char_literal12_tree=null;
		RewriteRuleTokenStream stream_CloseCurlyBrace=new RewriteRuleTokenStream(adaptor,"token CloseCurlyBrace");
		RewriteRuleTokenStream stream_OpenCurlyBrace=new RewriteRuleTokenStream(adaptor,"token OpenCurlyBrace");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:146:5: ( ( simpleStatement )? BodyString | '{' statement '}' -> statement | bracketedBlock | classDefinition | interfaceDefinition | complexStatement | simpleStatement ';' !)
			int alt3=7;
			alt3 = dfa3.predict(input);
			switch (alt3) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: ( simpleStatement )? BodyString
					{
					root_0 = (CommonTree)adaptor.nil();


					// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: ( simpleStatement )?
					int alt2=2;
					int LA2_0 = input.LA(1);
					if ( (LA2_0==Ampersand||LA2_0==Array||LA2_0==Bang||(LA2_0 >= Boolean && LA2_0 <= Break)||LA2_0==Clone||LA2_0==Continue||LA2_0==Dollar||(LA2_0 >= DoubleQuotedString && LA2_0 <= Echo)||(LA2_0 >= Global && LA2_0 <= HereDoc)||LA2_0==IncrementOperator||LA2_0==Integer||LA2_0==Minus||LA2_0==New||LA2_0==OpenBrace||LA2_0==Real||(LA2_0 >= RequireOperator && LA2_0 <= Return)||LA2_0==SingleQuotedString||(LA2_0 >= Static && LA2_0 <= SuppressWarnings)||(LA2_0 >= Throw && LA2_0 <= Tilde)||LA2_0==UnquotedString) ) {
						alt2=1;
					}
					switch (alt2) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: simpleStatement
							{
							pushFollow(FOLLOW_simpleStatement_in_statement912);
							simpleStatement2=simpleStatement();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleStatement2.getTree());

							}
							break;

					}

					BodyString3=(Token)match(input,BodyString,FOLLOW_BodyString_in_statement915); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					BodyString3_tree = (CommonTree)adaptor.create(BodyString3);
					adaptor.addChild(root_0, BodyString3_tree);
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:147:7: '{' statement '}'
					{
					char_literal4=(Token)match(input,OpenCurlyBrace,FOLLOW_OpenCurlyBrace_in_statement923); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenCurlyBrace.add(char_literal4);

					pushFollow(FOLLOW_statement_in_statement925);
					statement5=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement5.getTree());
					char_literal6=(Token)match(input,CloseCurlyBrace,FOLLOW_CloseCurlyBrace_in_statement927); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseCurlyBrace.add(char_literal6);

					// AST REWRITE
					// elements: statement
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 147:25: -> statement
					{
						adaptor.addChild(root_0, stream_statement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:148:7: bracketedBlock
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_bracketedBlock_in_statement939);
					bracketedBlock7=bracketedBlock();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, bracketedBlock7.getTree());

					}
					break;
				case 4 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:150:7: classDefinition
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_classDefinition_in_statement952);
					classDefinition8=classDefinition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, classDefinition8.getTree());

					}
					break;
				case 5 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:151:7: interfaceDefinition
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_interfaceDefinition_in_statement960);
					interfaceDefinition9=interfaceDefinition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, interfaceDefinition9.getTree());

					}
					break;
				case 6 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:152:7: complexStatement
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_complexStatement_in_statement968);
					complexStatement10=complexStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, complexStatement10.getTree());

					}
					break;
				case 7 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:153:7: simpleStatement ';' !
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_simpleStatement_in_statement976);
					simpleStatement11=simpleStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleStatement11.getTree());

					char_literal12=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_statement978); if (state.failed) return retval;
					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 2, statement_StartIndex); }

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


	public static class bracketedBlock_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "bracketedBlock"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:156:1: bracketedBlock : '{' (stmts= statement )* '}' -> ^( Block $stmts) ;
	public final PhpParser.bracketedBlock_return bracketedBlock() throws RecognitionException {
		PhpParser.bracketedBlock_return retval = new PhpParser.bracketedBlock_return();
		retval.start = input.LT(1);
		int bracketedBlock_StartIndex = input.index();

		CommonTree root_0 = null;

		Token char_literal13=null;
		Token char_literal14=null;
		ParserRuleReturnScope stmts =null;

		CommonTree char_literal13_tree=null;
		CommonTree char_literal14_tree=null;
		RewriteRuleTokenStream stream_CloseCurlyBrace=new RewriteRuleTokenStream(adaptor,"token CloseCurlyBrace");
		RewriteRuleTokenStream stream_OpenCurlyBrace=new RewriteRuleTokenStream(adaptor,"token OpenCurlyBrace");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:157:5: ( '{' (stmts= statement )* '}' -> ^( Block $stmts) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:157:7: '{' (stmts= statement )* '}'
			{
			char_literal13=(Token)match(input,OpenCurlyBrace,FOLLOW_OpenCurlyBrace_in_bracketedBlock1000); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OpenCurlyBrace.add(char_literal13);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:157:16: (stmts= statement )*
			loop4:
			while (true) {
				int alt4=2;
				int LA4_0 = input.LA(1);
				if ( (LA4_0==Abstract||LA4_0==Ampersand||LA4_0==Array||LA4_0==Bang||(LA4_0 >= BodyString && LA4_0 <= Break)||LA4_0==Class||LA4_0==Clone||LA4_0==Continue||(LA4_0 >= Do && LA4_0 <= Dollar)||(LA4_0 >= DoubleQuotedString && LA4_0 <= Echo)||LA4_0==For||LA4_0==Foreach||(LA4_0 >= Function && LA4_0 <= HereDoc)||LA4_0==If||LA4_0==IncrementOperator||(LA4_0 >= Integer && LA4_0 <= Interface)||LA4_0==Minus||LA4_0==New||(LA4_0 >= OpenBrace && LA4_0 <= OpenCurlyBrace)||LA4_0==Real||(LA4_0 >= RequireOperator && LA4_0 <= Return)||LA4_0==SingleQuotedString||(LA4_0 >= Static && LA4_0 <= Tilde)||LA4_0==UnquotedString||LA4_0==While) ) {
					alt4=1;
				}

				switch (alt4) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:157:16: stmts= statement
					{
					pushFollow(FOLLOW_statement_in_bracketedBlock1004);
					stmts=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(stmts.getTree());
					}
					break;

				default :
					break loop4;
				}
			}

			char_literal14=(Token)match(input,CloseCurlyBrace,FOLLOW_CloseCurlyBrace_in_bracketedBlock1007); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CloseCurlyBrace.add(char_literal14);

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

			root_0 = (CommonTree)adaptor.nil();
			// 157:32: -> ^( Block $stmts)
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:157:35: ^( Block $stmts)
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Block, "Block"), root_1);
				adaptor.addChild(root_1, stream_stmts.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 3, bracketedBlock_StartIndex); }

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


	public static class interfaceDefinition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "interfaceDefinition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:160:1: interfaceDefinition : Interface interfaceName= UnquotedString ( interfaceExtends )? OpenCurlyBrace ( interfaceMember )* CloseCurlyBrace -> ^( Interface $interfaceName ( interfaceExtends )? ( interfaceMember )* ) ;
	public final PhpParser.interfaceDefinition_return interfaceDefinition() throws RecognitionException {
		PhpParser.interfaceDefinition_return retval = new PhpParser.interfaceDefinition_return();
		retval.start = input.LT(1);
		int interfaceDefinition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token interfaceName=null;
		Token Interface15=null;
		Token OpenCurlyBrace17=null;
		Token CloseCurlyBrace19=null;
		ParserRuleReturnScope interfaceExtends16 =null;
		ParserRuleReturnScope interfaceMember18 =null;

		CommonTree interfaceName_tree=null;
		CommonTree Interface15_tree=null;
		CommonTree OpenCurlyBrace17_tree=null;
		CommonTree CloseCurlyBrace19_tree=null;
		RewriteRuleTokenStream stream_CloseCurlyBrace=new RewriteRuleTokenStream(adaptor,"token CloseCurlyBrace");
		RewriteRuleTokenStream stream_OpenCurlyBrace=new RewriteRuleTokenStream(adaptor,"token OpenCurlyBrace");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleTokenStream stream_Interface=new RewriteRuleTokenStream(adaptor,"token Interface");
		RewriteRuleSubtreeStream stream_interfaceMember=new RewriteRuleSubtreeStream(adaptor,"rule interfaceMember");
		RewriteRuleSubtreeStream stream_interfaceExtends=new RewriteRuleSubtreeStream(adaptor,"rule interfaceExtends");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:161:5: ( Interface interfaceName= UnquotedString ( interfaceExtends )? OpenCurlyBrace ( interfaceMember )* CloseCurlyBrace -> ^( Interface $interfaceName ( interfaceExtends )? ( interfaceMember )* ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:161:7: Interface interfaceName= UnquotedString ( interfaceExtends )? OpenCurlyBrace ( interfaceMember )* CloseCurlyBrace
			{
			Interface15=(Token)match(input,Interface,FOLLOW_Interface_in_interfaceDefinition1033); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Interface.add(Interface15);

			interfaceName=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_interfaceDefinition1037); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_UnquotedString.add(interfaceName);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:161:46: ( interfaceExtends )?
			int alt5=2;
			int LA5_0 = input.LA(1);
			if ( (LA5_0==Extends) ) {
				alt5=1;
			}
			switch (alt5) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:161:46: interfaceExtends
					{
					pushFollow(FOLLOW_interfaceExtends_in_interfaceDefinition1039);
					interfaceExtends16=interfaceExtends();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_interfaceExtends.add(interfaceExtends16.getTree());
					}
					break;

			}

			OpenCurlyBrace17=(Token)match(input,OpenCurlyBrace,FOLLOW_OpenCurlyBrace_in_interfaceDefinition1050); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OpenCurlyBrace.add(OpenCurlyBrace17);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:163:9: ( interfaceMember )*
			loop6:
			while (true) {
				int alt6=2;
				int LA6_0 = input.LA(1);
				if ( ((LA6_0 >= Abstract && LA6_0 <= AccessModifier)||LA6_0==Const||LA6_0==Function||LA6_0==Static) ) {
					alt6=1;
				}

				switch (alt6) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:163:9: interfaceMember
					{
					pushFollow(FOLLOW_interfaceMember_in_interfaceDefinition1060);
					interfaceMember18=interfaceMember();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_interfaceMember.add(interfaceMember18.getTree());
					}
					break;

				default :
					break loop6;
				}
			}

			CloseCurlyBrace19=(Token)match(input,CloseCurlyBrace,FOLLOW_CloseCurlyBrace_in_interfaceDefinition1071); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CloseCurlyBrace.add(CloseCurlyBrace19);

			// AST REWRITE
			// elements: interfaceExtends, interfaceName, interfaceMember, Interface
			// token labels: interfaceName
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleTokenStream stream_interfaceName=new RewriteRuleTokenStream(adaptor,"token interfaceName",interfaceName);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 165:9: -> ^( Interface $interfaceName ( interfaceExtends )? ( interfaceMember )* )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:165:12: ^( Interface $interfaceName ( interfaceExtends )? ( interfaceMember )* )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot(stream_Interface.nextNode(), root_1);
				adaptor.addChild(root_1, stream_interfaceName.nextNode());
				// com/github/gumtreediff/gen/antlr3/php/Php.g:165:39: ( interfaceExtends )?
				if ( stream_interfaceExtends.hasNext() ) {
					adaptor.addChild(root_1, stream_interfaceExtends.nextTree());
				}
				stream_interfaceExtends.reset();

				// com/github/gumtreediff/gen/antlr3/php/Php.g:165:57: ( interfaceMember )*
				while ( stream_interfaceMember.hasNext() ) {
					adaptor.addChild(root_1, stream_interfaceMember.nextTree());
				}
				stream_interfaceMember.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 4, interfaceDefinition_StartIndex); }

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


	public static class interfaceExtends_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "interfaceExtends"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:168:1: interfaceExtends : Extends ^ UnquotedString ( Comma ! UnquotedString )* ;
	public final PhpParser.interfaceExtends_return interfaceExtends() throws RecognitionException {
		PhpParser.interfaceExtends_return retval = new PhpParser.interfaceExtends_return();
		retval.start = input.LT(1);
		int interfaceExtends_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Extends20=null;
		Token UnquotedString21=null;
		Token Comma22=null;
		Token UnquotedString23=null;

		CommonTree Extends20_tree=null;
		CommonTree UnquotedString21_tree=null;
		CommonTree Comma22_tree=null;
		CommonTree UnquotedString23_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:169:5: ( Extends ^ UnquotedString ( Comma ! UnquotedString )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:169:7: Extends ^ UnquotedString ( Comma ! UnquotedString )*
			{
			root_0 = (CommonTree)adaptor.nil();


			Extends20=(Token)match(input,Extends,FOLLOW_Extends_in_interfaceExtends1111); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Extends20_tree = (CommonTree)adaptor.create(Extends20);
			root_0 = (CommonTree)adaptor.becomeRoot(Extends20_tree, root_0);
			}

			UnquotedString21=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_interfaceExtends1114); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			UnquotedString21_tree = (CommonTree)adaptor.create(UnquotedString21);
			adaptor.addChild(root_0, UnquotedString21_tree);
			}

			// com/github/gumtreediff/gen/antlr3/php/Php.g:169:31: ( Comma ! UnquotedString )*
			loop7:
			while (true) {
				int alt7=2;
				int LA7_0 = input.LA(1);
				if ( (LA7_0==Comma) ) {
					alt7=1;
				}

				switch (alt7) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:169:32: Comma ! UnquotedString
					{
					Comma22=(Token)match(input,Comma,FOLLOW_Comma_in_interfaceExtends1117); if (state.failed) return retval;
					UnquotedString23=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_interfaceExtends1120); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					UnquotedString23_tree = (CommonTree)adaptor.create(UnquotedString23);
					adaptor.addChild(root_0, UnquotedString23_tree);
					}

					}
					break;

				default :
					break loop7;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 5, interfaceExtends_StartIndex); }

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


	public static class interfaceMember_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "interfaceMember"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:171:1: interfaceMember : ( Const UnquotedString ( Equals atom )? ';' -> ^( Const UnquotedString ( atom )? ) | ( fieldModifier )* Function UnquotedString parametersDefinition ';' -> ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition ) );
	public final PhpParser.interfaceMember_return interfaceMember() throws RecognitionException {
		PhpParser.interfaceMember_return retval = new PhpParser.interfaceMember_return();
		retval.start = input.LT(1);
		int interfaceMember_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Const24=null;
		Token UnquotedString25=null;
		Token Equals26=null;
		Token char_literal28=null;
		Token Function30=null;
		Token UnquotedString31=null;
		Token char_literal33=null;
		ParserRuleReturnScope atom27 =null;
		ParserRuleReturnScope fieldModifier29 =null;
		ParserRuleReturnScope parametersDefinition32 =null;

		CommonTree Const24_tree=null;
		CommonTree UnquotedString25_tree=null;
		CommonTree Equals26_tree=null;
		CommonTree char_literal28_tree=null;
		CommonTree Function30_tree=null;
		CommonTree UnquotedString31_tree=null;
		CommonTree char_literal33_tree=null;
		RewriteRuleTokenStream stream_Function=new RewriteRuleTokenStream(adaptor,"token Function");
		RewriteRuleTokenStream stream_Equals=new RewriteRuleTokenStream(adaptor,"token Equals");
		RewriteRuleTokenStream stream_Const=new RewriteRuleTokenStream(adaptor,"token Const");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleTokenStream stream_SemiColon=new RewriteRuleTokenStream(adaptor,"token SemiColon");
		RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");
		RewriteRuleSubtreeStream stream_fieldModifier=new RewriteRuleSubtreeStream(adaptor,"rule fieldModifier");
		RewriteRuleSubtreeStream stream_parametersDefinition=new RewriteRuleSubtreeStream(adaptor,"rule parametersDefinition");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:172:5: ( Const UnquotedString ( Equals atom )? ';' -> ^( Const UnquotedString ( atom )? ) | ( fieldModifier )* Function UnquotedString parametersDefinition ';' -> ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition ) )
			int alt10=2;
			int LA10_0 = input.LA(1);
			if ( (LA10_0==Const) ) {
				alt10=1;
			}
			else if ( ((LA10_0 >= Abstract && LA10_0 <= AccessModifier)||LA10_0==Function||LA10_0==Static) ) {
				alt10=2;
			}

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

			switch (alt10) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:172:7: Const UnquotedString ( Equals atom )? ';'
					{
					Const24=(Token)match(input,Const,FOLLOW_Const_in_interfaceMember1138); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Const.add(Const24);

					UnquotedString25=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_interfaceMember1140); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString25);

					// com/github/gumtreediff/gen/antlr3/php/Php.g:172:28: ( Equals atom )?
					int alt8=2;
					int LA8_0 = input.LA(1);
					if ( (LA8_0==Equals) ) {
						alt8=1;
					}
					switch (alt8) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:172:29: Equals atom
							{
							Equals26=(Token)match(input,Equals,FOLLOW_Equals_in_interfaceMember1143); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Equals.add(Equals26);

							pushFollow(FOLLOW_atom_in_interfaceMember1145);
							atom27=atom();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_atom.add(atom27.getTree());
							}
							break;

					}

					char_literal28=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_interfaceMember1149); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SemiColon.add(char_literal28);

					// AST REWRITE
					// elements: Const, UnquotedString, atom
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 173:9: -> ^( Const UnquotedString ( atom )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:173:12: ^( Const UnquotedString ( atom )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Const.nextNode(), root_1);
						adaptor.addChild(root_1, stream_UnquotedString.nextNode());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:173:35: ( atom )?
						if ( stream_atom.hasNext() ) {
							adaptor.addChild(root_1, stream_atom.nextTree());
						}
						stream_atom.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:174:7: ( fieldModifier )* Function UnquotedString parametersDefinition ';'
					{
					// com/github/gumtreediff/gen/antlr3/php/Php.g:174:7: ( fieldModifier )*
					loop9:
					while (true) {
						int alt9=2;
						int LA9_0 = input.LA(1);
						if ( ((LA9_0 >= Abstract && LA9_0 <= AccessModifier)||LA9_0==Static) ) {
							alt9=1;
						}

						switch (alt9) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:174:7: fieldModifier
							{
							pushFollow(FOLLOW_fieldModifier_in_interfaceMember1177);
							fieldModifier29=fieldModifier();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_fieldModifier.add(fieldModifier29.getTree());
							}
							break;

						default :
							break loop9;
						}
					}

					Function30=(Token)match(input,Function,FOLLOW_Function_in_interfaceMember1180); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Function.add(Function30);

					UnquotedString31=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_interfaceMember1182); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString31);

					pushFollow(FOLLOW_parametersDefinition_in_interfaceMember1184);
					parametersDefinition32=parametersDefinition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_parametersDefinition.add(parametersDefinition32.getTree());
					char_literal33=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_interfaceMember1186); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SemiColon.add(char_literal33);

					// AST REWRITE
					// elements: fieldModifier, parametersDefinition, UnquotedString
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 175:9: -> ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:175:12: ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Method, "Method"), root_1);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:175:21: ^( Modifiers ( fieldModifier )* )
						{
						CommonTree root_2 = (CommonTree)adaptor.nil();
						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Modifiers, "Modifiers"), root_2);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:175:33: ( fieldModifier )*
						while ( stream_fieldModifier.hasNext() ) {
							adaptor.addChild(root_2, stream_fieldModifier.nextTree());
						}
						stream_fieldModifier.reset();

						adaptor.addChild(root_1, root_2);
						}

						adaptor.addChild(root_1, stream_UnquotedString.nextNode());
						adaptor.addChild(root_1, stream_parametersDefinition.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 6, interfaceMember_StartIndex); }

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


	public static class classDefinition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "classDefinition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:178:1: classDefinition : ( classModifier )? Class className= UnquotedString ( Extends extendsclass= UnquotedString )? ( classImplements )? OpenCurlyBrace ( classMember )* CloseCurlyBrace -> ^( Class ^( Modifiers ( classModifier )? ) $className ( ^( Extends $extendsclass) )? ( classImplements )? ( classMember )* ) ;
	public final PhpParser.classDefinition_return classDefinition() throws RecognitionException {
		PhpParser.classDefinition_return retval = new PhpParser.classDefinition_return();
		retval.start = input.LT(1);
		int classDefinition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token className=null;
		Token extendsclass=null;
		Token Class35=null;
		Token Extends36=null;
		Token OpenCurlyBrace38=null;
		Token CloseCurlyBrace40=null;
		ParserRuleReturnScope classModifier34 =null;
		ParserRuleReturnScope classImplements37 =null;
		ParserRuleReturnScope classMember39 =null;

		CommonTree className_tree=null;
		CommonTree extendsclass_tree=null;
		CommonTree Class35_tree=null;
		CommonTree Extends36_tree=null;
		CommonTree OpenCurlyBrace38_tree=null;
		CommonTree CloseCurlyBrace40_tree=null;
		RewriteRuleTokenStream stream_CloseCurlyBrace=new RewriteRuleTokenStream(adaptor,"token CloseCurlyBrace");
		RewriteRuleTokenStream stream_OpenCurlyBrace=new RewriteRuleTokenStream(adaptor,"token OpenCurlyBrace");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleTokenStream stream_Class=new RewriteRuleTokenStream(adaptor,"token Class");
		RewriteRuleTokenStream stream_Extends=new RewriteRuleTokenStream(adaptor,"token Extends");
		RewriteRuleSubtreeStream stream_classModifier=new RewriteRuleSubtreeStream(adaptor,"rule classModifier");
		RewriteRuleSubtreeStream stream_classImplements=new RewriteRuleSubtreeStream(adaptor,"rule classImplements");
		RewriteRuleSubtreeStream stream_classMember=new RewriteRuleSubtreeStream(adaptor,"rule classMember");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:179:5: ( ( classModifier )? Class className= UnquotedString ( Extends extendsclass= UnquotedString )? ( classImplements )? OpenCurlyBrace ( classMember )* CloseCurlyBrace -> ^( Class ^( Modifiers ( classModifier )? ) $className ( ^( Extends $extendsclass) )? ( classImplements )? ( classMember )* ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:179:9: ( classModifier )? Class className= UnquotedString ( Extends extendsclass= UnquotedString )? ( classImplements )? OpenCurlyBrace ( classMember )* CloseCurlyBrace
			{
			// com/github/gumtreediff/gen/antlr3/php/Php.g:179:9: ( classModifier )?
			int alt11=2;
			int LA11_0 = input.LA(1);
			if ( (LA11_0==Abstract) ) {
				alt11=1;
			}
			switch (alt11) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:179:9: classModifier
					{
					pushFollow(FOLLOW_classModifier_in_classDefinition1230);
					classModifier34=classModifier();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_classModifier.add(classModifier34.getTree());
					}
					break;

			}

			Class35=(Token)match(input,Class,FOLLOW_Class_in_classDefinition1242); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Class.add(Class35);

			className=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classDefinition1246); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_UnquotedString.add(className);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:181:9: ( Extends extendsclass= UnquotedString )?
			int alt12=2;
			int LA12_0 = input.LA(1);
			if ( (LA12_0==Extends) ) {
				alt12=1;
			}
			switch (alt12) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:181:10: Extends extendsclass= UnquotedString
					{
					Extends36=(Token)match(input,Extends,FOLLOW_Extends_in_classDefinition1258); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Extends.add(Extends36);

					extendsclass=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classDefinition1262); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(extendsclass);

					}
					break;

			}

			// com/github/gumtreediff/gen/antlr3/php/Php.g:182:9: ( classImplements )?
			int alt13=2;
			int LA13_0 = input.LA(1);
			if ( (LA13_0==Implements) ) {
				alt13=1;
			}
			switch (alt13) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:182:9: classImplements
					{
					pushFollow(FOLLOW_classImplements_in_classDefinition1275);
					classImplements37=classImplements();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_classImplements.add(classImplements37.getTree());
					}
					break;

			}

			OpenCurlyBrace38=(Token)match(input,OpenCurlyBrace,FOLLOW_OpenCurlyBrace_in_classDefinition1286); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OpenCurlyBrace.add(OpenCurlyBrace38);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:184:9: ( classMember )*
			loop14:
			while (true) {
				int alt14=2;
				int LA14_0 = input.LA(1);
				if ( ((LA14_0 >= Abstract && LA14_0 <= AccessModifier)||LA14_0==Const||LA14_0==Dollar||LA14_0==Function||LA14_0==Static||LA14_0==Var) ) {
					alt14=1;
				}

				switch (alt14) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:184:9: classMember
					{
					pushFollow(FOLLOW_classMember_in_classDefinition1296);
					classMember39=classMember();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_classMember.add(classMember39.getTree());
					}
					break;

				default :
					break loop14;
				}
			}

			CloseCurlyBrace40=(Token)match(input,CloseCurlyBrace,FOLLOW_CloseCurlyBrace_in_classDefinition1307); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CloseCurlyBrace.add(CloseCurlyBrace40);

			// AST REWRITE
			// elements: classModifier, className, classImplements, Extends, Class, extendsclass, classMember
			// token labels: className, extendsclass
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleTokenStream stream_className=new RewriteRuleTokenStream(adaptor,"token className",className);
			RewriteRuleTokenStream stream_extendsclass=new RewriteRuleTokenStream(adaptor,"token extendsclass",extendsclass);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 186:9: -> ^( Class ^( Modifiers ( classModifier )? ) $className ( ^( Extends $extendsclass) )? ( classImplements )? ( classMember )* )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:186:12: ^( Class ^( Modifiers ( classModifier )? ) $className ( ^( Extends $extendsclass) )? ( classImplements )? ( classMember )* )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot(stream_Class.nextNode(), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:186:20: ^( Modifiers ( classModifier )? )
				{
				CommonTree root_2 = (CommonTree)adaptor.nil();
				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Modifiers, "Modifiers"), root_2);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:186:32: ( classModifier )?
				if ( stream_classModifier.hasNext() ) {
					adaptor.addChild(root_2, stream_classModifier.nextTree());
				}
				stream_classModifier.reset();

				adaptor.addChild(root_1, root_2);
				}

				adaptor.addChild(root_1, stream_className.nextNode());
				// com/github/gumtreediff/gen/antlr3/php/Php.g:186:59: ( ^( Extends $extendsclass) )?
				if ( stream_Extends.hasNext()||stream_extendsclass.hasNext() ) {
					// com/github/gumtreediff/gen/antlr3/php/Php.g:186:59: ^( Extends $extendsclass)
					{
					CommonTree root_2 = (CommonTree)adaptor.nil();
					root_2 = (CommonTree)adaptor.becomeRoot(stream_Extends.nextNode(), root_2);
					adaptor.addChild(root_2, stream_extendsclass.nextNode());
					adaptor.addChild(root_1, root_2);
					}

				}
				stream_Extends.reset();
				stream_extendsclass.reset();

				// com/github/gumtreediff/gen/antlr3/php/Php.g:186:85: ( classImplements )?
				if ( stream_classImplements.hasNext() ) {
					adaptor.addChild(root_1, stream_classImplements.nextTree());
				}
				stream_classImplements.reset();

				// com/github/gumtreediff/gen/antlr3/php/Php.g:187:13: ( classMember )*
				while ( stream_classMember.hasNext() ) {
					adaptor.addChild(root_1, stream_classMember.nextTree());
				}
				stream_classMember.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 7, classDefinition_StartIndex); }

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


	public static class classImplements_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "classImplements"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:191:1: classImplements : Implements ^ ( UnquotedString ( Comma ! UnquotedString )* ) ;
	public final PhpParser.classImplements_return classImplements() throws RecognitionException {
		PhpParser.classImplements_return retval = new PhpParser.classImplements_return();
		retval.start = input.LT(1);
		int classImplements_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Implements41=null;
		Token UnquotedString42=null;
		Token Comma43=null;
		Token UnquotedString44=null;

		CommonTree Implements41_tree=null;
		CommonTree UnquotedString42_tree=null;
		CommonTree Comma43_tree=null;
		CommonTree UnquotedString44_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:192:5: ( Implements ^ ( UnquotedString ( Comma ! UnquotedString )* ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:192:8: Implements ^ ( UnquotedString ( Comma ! UnquotedString )* )
			{
			root_0 = (CommonTree)adaptor.nil();


			Implements41=(Token)match(input,Implements,FOLLOW_Implements_in_classImplements1389); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Implements41_tree = (CommonTree)adaptor.create(Implements41);
			root_0 = (CommonTree)adaptor.becomeRoot(Implements41_tree, root_0);
			}

			// com/github/gumtreediff/gen/antlr3/php/Php.g:192:20: ( UnquotedString ( Comma ! UnquotedString )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:192:21: UnquotedString ( Comma ! UnquotedString )*
			{
			UnquotedString42=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classImplements1393); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			UnquotedString42_tree = (CommonTree)adaptor.create(UnquotedString42);
			adaptor.addChild(root_0, UnquotedString42_tree);
			}

			// com/github/gumtreediff/gen/antlr3/php/Php.g:192:36: ( Comma ! UnquotedString )*
			loop15:
			while (true) {
				int alt15=2;
				int LA15_0 = input.LA(1);
				if ( (LA15_0==Comma) ) {
					alt15=1;
				}

				switch (alt15) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:192:37: Comma ! UnquotedString
					{
					Comma43=(Token)match(input,Comma,FOLLOW_Comma_in_classImplements1396); if (state.failed) return retval;
					UnquotedString44=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classImplements1399); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					UnquotedString44_tree = (CommonTree)adaptor.create(UnquotedString44);
					adaptor.addChild(root_0, UnquotedString44_tree);
					}

					}
					break;

				default :
					break loop15;
				}
			}

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 8, classImplements_StartIndex); }

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


	public static class classMember_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "classMember"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:195:1: classMember : ( ( fieldModifier )* Function UnquotedString parametersDefinition ( bracketedBlock | ';' ) -> ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition ( bracketedBlock )? ) | Var Dollar UnquotedString ( Equals atom )? ';' -> ^( Var ^( Dollar UnquotedString ) ( atom )? ) | Const UnquotedString ( Equals atom )? ';' -> ^( Const UnquotedString ( atom )? ) | ( fieldModifier )* ( Dollar UnquotedString ) ( Equals atom )? ';' -> ^( Field ^( Modifiers ( fieldModifier )* ) ^( Dollar UnquotedString ) ( atom )? ) );
	public final PhpParser.classMember_return classMember() throws RecognitionException {
		PhpParser.classMember_return retval = new PhpParser.classMember_return();
		retval.start = input.LT(1);
		int classMember_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Function46=null;
		Token UnquotedString47=null;
		Token char_literal50=null;
		Token Var51=null;
		Token Dollar52=null;
		Token UnquotedString53=null;
		Token Equals54=null;
		Token char_literal56=null;
		Token Const57=null;
		Token UnquotedString58=null;
		Token Equals59=null;
		Token char_literal61=null;
		Token Dollar63=null;
		Token UnquotedString64=null;
		Token Equals65=null;
		Token char_literal67=null;
		ParserRuleReturnScope fieldModifier45 =null;
		ParserRuleReturnScope parametersDefinition48 =null;
		ParserRuleReturnScope bracketedBlock49 =null;
		ParserRuleReturnScope atom55 =null;
		ParserRuleReturnScope atom60 =null;
		ParserRuleReturnScope fieldModifier62 =null;
		ParserRuleReturnScope atom66 =null;

		CommonTree Function46_tree=null;
		CommonTree UnquotedString47_tree=null;
		CommonTree char_literal50_tree=null;
		CommonTree Var51_tree=null;
		CommonTree Dollar52_tree=null;
		CommonTree UnquotedString53_tree=null;
		CommonTree Equals54_tree=null;
		CommonTree char_literal56_tree=null;
		CommonTree Const57_tree=null;
		CommonTree UnquotedString58_tree=null;
		CommonTree Equals59_tree=null;
		CommonTree char_literal61_tree=null;
		CommonTree Dollar63_tree=null;
		CommonTree UnquotedString64_tree=null;
		CommonTree Equals65_tree=null;
		CommonTree char_literal67_tree=null;
		RewriteRuleTokenStream stream_Function=new RewriteRuleTokenStream(adaptor,"token Function");
		RewriteRuleTokenStream stream_Equals=new RewriteRuleTokenStream(adaptor,"token Equals");
		RewriteRuleTokenStream stream_Dollar=new RewriteRuleTokenStream(adaptor,"token Dollar");
		RewriteRuleTokenStream stream_Var=new RewriteRuleTokenStream(adaptor,"token Var");
		RewriteRuleTokenStream stream_Const=new RewriteRuleTokenStream(adaptor,"token Const");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleTokenStream stream_SemiColon=new RewriteRuleTokenStream(adaptor,"token SemiColon");
		RewriteRuleSubtreeStream stream_fieldModifier=new RewriteRuleSubtreeStream(adaptor,"rule fieldModifier");
		RewriteRuleSubtreeStream stream_bracketedBlock=new RewriteRuleSubtreeStream(adaptor,"rule bracketedBlock");
		RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");
		RewriteRuleSubtreeStream stream_parametersDefinition=new RewriteRuleSubtreeStream(adaptor,"rule parametersDefinition");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:196:5: ( ( fieldModifier )* Function UnquotedString parametersDefinition ( bracketedBlock | ';' ) -> ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition ( bracketedBlock )? ) | Var Dollar UnquotedString ( Equals atom )? ';' -> ^( Var ^( Dollar UnquotedString ) ( atom )? ) | Const UnquotedString ( Equals atom )? ';' -> ^( Const UnquotedString ( atom )? ) | ( fieldModifier )* ( Dollar UnquotedString ) ( Equals atom )? ';' -> ^( Field ^( Modifiers ( fieldModifier )* ) ^( Dollar UnquotedString ) ( atom )? ) )
			int alt22=4;
			switch ( input.LA(1) ) {
			case Abstract:
			case AccessModifier:
			case Static:
				{
				switch ( input.LA(2) ) {
				case Function:
					{
					alt22=1;
					}
					break;
				case Abstract:
				case AccessModifier:
				case Static:
					{
					int LA22_7 = input.LA(3);
					if ( (synpred23_Php()) ) {
						alt22=1;
					}
					else if ( (true) ) {
						alt22=4;
					}

					}
					break;
				case Dollar:
					{
					alt22=4;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 22, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case Function:
				{
				alt22=1;
				}
				break;
			case Var:
				{
				alt22=2;
				}
				break;
			case Const:
				{
				alt22=3;
				}
				break;
			case Dollar:
				{
				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/github/gumtreediff/gen/antlr3/php/Php.g:196:7: ( fieldModifier )* Function UnquotedString parametersDefinition ( bracketedBlock | ';' )
					{
					// com/github/gumtreediff/gen/antlr3/php/Php.g:196:7: ( fieldModifier )*
					loop16:
					while (true) {
						int alt16=2;
						int LA16_0 = input.LA(1);
						if ( ((LA16_0 >= Abstract && LA16_0 <= AccessModifier)||LA16_0==Static) ) {
							alt16=1;
						}

						switch (alt16) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:196:7: fieldModifier
							{
							pushFollow(FOLLOW_fieldModifier_in_classMember1419);
							fieldModifier45=fieldModifier();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_fieldModifier.add(fieldModifier45.getTree());
							}
							break;

						default :
							break loop16;
						}
					}

					Function46=(Token)match(input,Function,FOLLOW_Function_in_classMember1422); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Function.add(Function46);

					UnquotedString47=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classMember1424); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString47);

					pushFollow(FOLLOW_parametersDefinition_in_classMember1426);
					parametersDefinition48=parametersDefinition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_parametersDefinition.add(parametersDefinition48.getTree());
					// com/github/gumtreediff/gen/antlr3/php/Php.g:197:9: ( bracketedBlock | ';' )
					int alt17=2;
					int LA17_0 = input.LA(1);
					if ( (LA17_0==OpenCurlyBrace) ) {
						alt17=1;
					}
					else if ( (LA17_0==SemiColon) ) {
						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/github/gumtreediff/gen/antlr3/php/Php.g:197:10: bracketedBlock
							{
							pushFollow(FOLLOW_bracketedBlock_in_classMember1438);
							bracketedBlock49=bracketedBlock();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_bracketedBlock.add(bracketedBlock49.getTree());
							}
							break;
						case 2 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:197:27: ';'
							{
							char_literal50=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_classMember1442); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_SemiColon.add(char_literal50);

							}
							break;

					}

					// AST REWRITE
					// elements: bracketedBlock, parametersDefinition, UnquotedString, fieldModifier
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 198:9: -> ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition ( bracketedBlock )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:198:12: ^( Method ^( Modifiers ( fieldModifier )* ) UnquotedString parametersDefinition ( bracketedBlock )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Method, "Method"), root_1);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:198:21: ^( Modifiers ( fieldModifier )* )
						{
						CommonTree root_2 = (CommonTree)adaptor.nil();
						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Modifiers, "Modifiers"), root_2);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:198:33: ( fieldModifier )*
						while ( stream_fieldModifier.hasNext() ) {
							adaptor.addChild(root_2, stream_fieldModifier.nextTree());
						}
						stream_fieldModifier.reset();

						adaptor.addChild(root_1, root_2);
						}

						adaptor.addChild(root_1, stream_UnquotedString.nextNode());
						adaptor.addChild(root_1, stream_parametersDefinition.nextTree());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:198:85: ( bracketedBlock )?
						if ( stream_bracketedBlock.hasNext() ) {
							adaptor.addChild(root_1, stream_bracketedBlock.nextTree());
						}
						stream_bracketedBlock.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:199:7: Var Dollar UnquotedString ( Equals atom )? ';'
					{
					Var51=(Token)match(input,Var,FOLLOW_Var_in_classMember1479); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Var.add(Var51);

					Dollar52=(Token)match(input,Dollar,FOLLOW_Dollar_in_classMember1481); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Dollar.add(Dollar52);

					UnquotedString53=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classMember1483); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString53);

					// com/github/gumtreediff/gen/antlr3/php/Php.g:199:33: ( Equals atom )?
					int alt18=2;
					int LA18_0 = input.LA(1);
					if ( (LA18_0==Equals) ) {
						alt18=1;
					}
					switch (alt18) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:199:34: Equals atom
							{
							Equals54=(Token)match(input,Equals,FOLLOW_Equals_in_classMember1486); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Equals.add(Equals54);

							pushFollow(FOLLOW_atom_in_classMember1488);
							atom55=atom();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_atom.add(atom55.getTree());
							}
							break;

					}

					char_literal56=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_classMember1492); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SemiColon.add(char_literal56);

					// AST REWRITE
					// elements: Dollar, Var, atom, UnquotedString
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 200:9: -> ^( Var ^( Dollar UnquotedString ) ( atom )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:200:12: ^( Var ^( Dollar UnquotedString ) ( atom )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Var.nextNode(), root_1);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:200:18: ^( Dollar UnquotedString )
						{
						CommonTree root_2 = (CommonTree)adaptor.nil();
						root_2 = (CommonTree)adaptor.becomeRoot(stream_Dollar.nextNode(), root_2);
						adaptor.addChild(root_2, stream_UnquotedString.nextNode());
						adaptor.addChild(root_1, root_2);
						}

						// com/github/gumtreediff/gen/antlr3/php/Php.g:200:43: ( atom )?
						if ( stream_atom.hasNext() ) {
							adaptor.addChild(root_1, stream_atom.nextTree());
						}
						stream_atom.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:201:7: Const UnquotedString ( Equals atom )? ';'
					{
					Const57=(Token)match(input,Const,FOLLOW_Const_in_classMember1525); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Const.add(Const57);

					UnquotedString58=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classMember1527); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString58);

					// com/github/gumtreediff/gen/antlr3/php/Php.g:201:28: ( Equals atom )?
					int alt19=2;
					int LA19_0 = input.LA(1);
					if ( (LA19_0==Equals) ) {
						alt19=1;
					}
					switch (alt19) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:201:29: Equals atom
							{
							Equals59=(Token)match(input,Equals,FOLLOW_Equals_in_classMember1530); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Equals.add(Equals59);

							pushFollow(FOLLOW_atom_in_classMember1532);
							atom60=atom();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_atom.add(atom60.getTree());
							}
							break;

					}

					char_literal61=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_classMember1536); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SemiColon.add(char_literal61);

					// AST REWRITE
					// elements: UnquotedString, atom, 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 202:9: -> ^( Const UnquotedString ( atom )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:202:12: ^( Const UnquotedString ( atom )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Const.nextNode(), root_1);
						adaptor.addChild(root_1, stream_UnquotedString.nextNode());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:202:35: ( atom )?
						if ( stream_atom.hasNext() ) {
							adaptor.addChild(root_1, stream_atom.nextTree());
						}
						stream_atom.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:203:7: ( fieldModifier )* ( Dollar UnquotedString ) ( Equals atom )? ';'
					{
					// com/github/gumtreediff/gen/antlr3/php/Php.g:203:7: ( fieldModifier )*
					loop20:
					while (true) {
						int alt20=2;
						int LA20_0 = input.LA(1);
						if ( ((LA20_0 >= Abstract && LA20_0 <= AccessModifier)||LA20_0==Static) ) {
							alt20=1;
						}

						switch (alt20) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:203:7: fieldModifier
							{
							pushFollow(FOLLOW_fieldModifier_in_classMember1564);
							fieldModifier62=fieldModifier();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_fieldModifier.add(fieldModifier62.getTree());
							}
							break;

						default :
							break loop20;
						}
					}

					// com/github/gumtreediff/gen/antlr3/php/Php.g:203:22: ( Dollar UnquotedString )
					// com/github/gumtreediff/gen/antlr3/php/Php.g:203:23: Dollar UnquotedString
					{
					Dollar63=(Token)match(input,Dollar,FOLLOW_Dollar_in_classMember1568); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Dollar.add(Dollar63);

					UnquotedString64=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_classMember1570); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString64);

					}

					// com/github/gumtreediff/gen/antlr3/php/Php.g:203:46: ( Equals atom )?
					int alt21=2;
					int LA21_0 = input.LA(1);
					if ( (LA21_0==Equals) ) {
						alt21=1;
					}
					switch (alt21) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:203:47: Equals atom
							{
							Equals65=(Token)match(input,Equals,FOLLOW_Equals_in_classMember1574); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Equals.add(Equals65);

							pushFollow(FOLLOW_atom_in_classMember1576);
							atom66=atom();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_atom.add(atom66.getTree());
							}
							break;

					}

					char_literal67=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_classMember1580); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SemiColon.add(char_literal67);

					// AST REWRITE
					// elements: UnquotedString, fieldModifier, atom, Dollar
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 204:9: -> ^( Field ^( Modifiers ( fieldModifier )* ) ^( Dollar UnquotedString ) ( atom )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:204:12: ^( Field ^( Modifiers ( fieldModifier )* ) ^( Dollar UnquotedString ) ( atom )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Field, "Field"), root_1);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:204:20: ^( Modifiers ( fieldModifier )* )
						{
						CommonTree root_2 = (CommonTree)adaptor.nil();
						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Modifiers, "Modifiers"), root_2);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:204:32: ( fieldModifier )*
						while ( stream_fieldModifier.hasNext() ) {
							adaptor.addChild(root_2, stream_fieldModifier.nextTree());
						}
						stream_fieldModifier.reset();

						adaptor.addChild(root_1, root_2);
						}

						// com/github/gumtreediff/gen/antlr3/php/Php.g:204:48: ^( Dollar UnquotedString )
						{
						CommonTree root_2 = (CommonTree)adaptor.nil();
						root_2 = (CommonTree)adaptor.becomeRoot(stream_Dollar.nextNode(), root_2);
						adaptor.addChild(root_2, stream_UnquotedString.nextNode());
						adaptor.addChild(root_1, root_2);
						}

						// com/github/gumtreediff/gen/antlr3/php/Php.g:204:73: ( atom )?
						if ( stream_atom.hasNext() ) {
							adaptor.addChild(root_1, stream_atom.nextTree());
						}
						stream_atom.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 9, classMember_StartIndex); }

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


	public static class fieldDefinition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "fieldDefinition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:207:1: fieldDefinition : Dollar UnquotedString ( Equals atom )? ';' -> ^( Field ^( Dollar UnquotedString ) ( atom )? ) ;
	public final PhpParser.fieldDefinition_return fieldDefinition() throws RecognitionException {
		PhpParser.fieldDefinition_return retval = new PhpParser.fieldDefinition_return();
		retval.start = input.LT(1);
		int fieldDefinition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Dollar68=null;
		Token UnquotedString69=null;
		Token Equals70=null;
		Token char_literal72=null;
		ParserRuleReturnScope atom71 =null;

		CommonTree Dollar68_tree=null;
		CommonTree UnquotedString69_tree=null;
		CommonTree Equals70_tree=null;
		CommonTree char_literal72_tree=null;
		RewriteRuleTokenStream stream_Equals=new RewriteRuleTokenStream(adaptor,"token Equals");
		RewriteRuleTokenStream stream_Dollar=new RewriteRuleTokenStream(adaptor,"token Dollar");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleTokenStream stream_SemiColon=new RewriteRuleTokenStream(adaptor,"token SemiColon");
		RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:208:5: ( Dollar UnquotedString ( Equals atom )? ';' -> ^( Field ^( Dollar UnquotedString ) ( atom )? ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:208:7: Dollar UnquotedString ( Equals atom )? ';'
			{
			Dollar68=(Token)match(input,Dollar,FOLLOW_Dollar_in_fieldDefinition1628); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Dollar.add(Dollar68);

			UnquotedString69=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_fieldDefinition1630); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString69);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:208:29: ( Equals atom )?
			int alt23=2;
			int LA23_0 = input.LA(1);
			if ( (LA23_0==Equals) ) {
				alt23=1;
			}
			switch (alt23) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:208:30: Equals atom
					{
					Equals70=(Token)match(input,Equals,FOLLOW_Equals_in_fieldDefinition1633); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Equals.add(Equals70);

					pushFollow(FOLLOW_atom_in_fieldDefinition1635);
					atom71=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_atom.add(atom71.getTree());
					}
					break;

			}

			char_literal72=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_fieldDefinition1639); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SemiColon.add(char_literal72);

			// AST REWRITE
			// elements: UnquotedString, atom, Dollar
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 208:47: -> ^( Field ^( Dollar UnquotedString ) ( atom )? )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:208:50: ^( Field ^( Dollar UnquotedString ) ( atom )? )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Field, "Field"), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:208:58: ^( Dollar UnquotedString )
				{
				CommonTree root_2 = (CommonTree)adaptor.nil();
				root_2 = (CommonTree)adaptor.becomeRoot(stream_Dollar.nextNode(), root_2);
				adaptor.addChild(root_2, stream_UnquotedString.nextNode());
				adaptor.addChild(root_1, root_2);
				}

				// com/github/gumtreediff/gen/antlr3/php/Php.g:208:83: ( atom )?
				if ( stream_atom.hasNext() ) {
					adaptor.addChild(root_1, stream_atom.nextTree());
				}
				stream_atom.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 10, fieldDefinition_StartIndex); }

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


	public static class classModifier_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "classModifier"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:211:1: classModifier : 'abstract' ;
	public final PhpParser.classModifier_return classModifier() throws RecognitionException {
		PhpParser.classModifier_return retval = new PhpParser.classModifier_return();
		retval.start = input.LT(1);
		int classModifier_StartIndex = input.index();

		CommonTree root_0 = null;

		Token string_literal73=null;

		CommonTree string_literal73_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:212:5: ( 'abstract' )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:212:7: 'abstract'
			{
			root_0 = (CommonTree)adaptor.nil();


			string_literal73=(Token)match(input,Abstract,FOLLOW_Abstract_in_classModifier1674); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			string_literal73_tree = (CommonTree)adaptor.create(string_literal73);
			adaptor.addChild(root_0, string_literal73_tree);
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 11, classModifier_StartIndex); }

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


	public static class fieldModifier_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "fieldModifier"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:214:1: fieldModifier : ( AccessModifier | 'abstract' | 'static' );
	public final PhpParser.fieldModifier_return fieldModifier() throws RecognitionException {
		PhpParser.fieldModifier_return retval = new PhpParser.fieldModifier_return();
		retval.start = input.LT(1);
		int fieldModifier_StartIndex = input.index();

		CommonTree root_0 = null;

		Token set74=null;

		CommonTree set74_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:215:5: ( AccessModifier | 'abstract' | 'static' )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:
			{
			root_0 = (CommonTree)adaptor.nil();


			set74=input.LT(1);
			if ( (input.LA(1) >= Abstract && input.LA(1) <= AccessModifier)||input.LA(1)==Static ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set74));
				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 = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 12, fieldModifier_StartIndex); }

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


	public static class complexStatement_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "complexStatement"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:219:1: complexStatement : ( If '(' ifCondition= expression ')' ifTrue= statement ( conditional )? -> ^( 'if' expression $ifTrue ( conditional )? ) | For '(' forInit forCondition forUpdate ')' statement -> ^( For forInit forCondition forUpdate statement ) | Foreach '(' expression 'as' arrayEntry ')' statement -> ^( Foreach expression arrayEntry statement ) | While '(' (whileCondition= expression )? ')' statement -> ^( While $whileCondition statement ) | Do statement While '(' doCondition= expression ')' ';' -> ^( Do statement $doCondition) | Switch '(' expression ')' '{' cases '}' -> ^( Switch expression cases ) | functionDefinition );
	public final PhpParser.complexStatement_return complexStatement() throws RecognitionException {
		PhpParser.complexStatement_return retval = new PhpParser.complexStatement_return();
		retval.start = input.LT(1);
		int complexStatement_StartIndex = input.index();

		CommonTree root_0 = null;

		Token If75=null;
		Token char_literal76=null;
		Token char_literal77=null;
		Token For79=null;
		Token char_literal80=null;
		Token char_literal84=null;
		Token Foreach86=null;
		Token char_literal87=null;
		Token string_literal89=null;
		Token char_literal91=null;
		Token While93=null;
		Token char_literal94=null;
		Token char_literal95=null;
		Token Do97=null;
		Token While99=null;
		Token char_literal100=null;
		Token char_literal101=null;
		Token char_literal102=null;
		Token Switch103=null;
		Token char_literal104=null;
		Token char_literal106=null;
		Token char_literal107=null;
		Token char_literal109=null;
		ParserRuleReturnScope ifCondition =null;
		ParserRuleReturnScope ifTrue =null;
		ParserRuleReturnScope whileCondition =null;
		ParserRuleReturnScope doCondition =null;
		ParserRuleReturnScope conditional78 =null;
		ParserRuleReturnScope forInit81 =null;
		ParserRuleReturnScope forCondition82 =null;
		ParserRuleReturnScope forUpdate83 =null;
		ParserRuleReturnScope statement85 =null;
		ParserRuleReturnScope expression88 =null;
		ParserRuleReturnScope arrayEntry90 =null;
		ParserRuleReturnScope statement92 =null;
		ParserRuleReturnScope statement96 =null;
		ParserRuleReturnScope statement98 =null;
		ParserRuleReturnScope expression105 =null;
		ParserRuleReturnScope cases108 =null;
		ParserRuleReturnScope functionDefinition110 =null;

		CommonTree If75_tree=null;
		CommonTree char_literal76_tree=null;
		CommonTree char_literal77_tree=null;
		CommonTree For79_tree=null;
		CommonTree char_literal80_tree=null;
		CommonTree char_literal84_tree=null;
		CommonTree Foreach86_tree=null;
		CommonTree char_literal87_tree=null;
		CommonTree string_literal89_tree=null;
		CommonTree char_literal91_tree=null;
		CommonTree While93_tree=null;
		CommonTree char_literal94_tree=null;
		CommonTree char_literal95_tree=null;
		CommonTree Do97_tree=null;
		CommonTree While99_tree=null;
		CommonTree char_literal100_tree=null;
		CommonTree char_literal101_tree=null;
		CommonTree char_literal102_tree=null;
		CommonTree Switch103_tree=null;
		CommonTree char_literal104_tree=null;
		CommonTree char_literal106_tree=null;
		CommonTree char_literal107_tree=null;
		CommonTree char_literal109_tree=null;
		RewriteRuleTokenStream stream_112=new RewriteRuleTokenStream(adaptor,"token 112");
		RewriteRuleTokenStream stream_CloseCurlyBrace=new RewriteRuleTokenStream(adaptor,"token CloseCurlyBrace");
		RewriteRuleTokenStream stream_Switch=new RewriteRuleTokenStream(adaptor,"token Switch");
		RewriteRuleTokenStream stream_OpenCurlyBrace=new RewriteRuleTokenStream(adaptor,"token OpenCurlyBrace");
		RewriteRuleTokenStream stream_For=new RewriteRuleTokenStream(adaptor,"token For");
		RewriteRuleTokenStream stream_Foreach=new RewriteRuleTokenStream(adaptor,"token Foreach");
		RewriteRuleTokenStream stream_OpenBrace=new RewriteRuleTokenStream(adaptor,"token OpenBrace");
		RewriteRuleTokenStream stream_While=new RewriteRuleTokenStream(adaptor,"token While");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CloseBrace=new RewriteRuleTokenStream(adaptor,"token CloseBrace");
		RewriteRuleTokenStream stream_If=new RewriteRuleTokenStream(adaptor,"token If");
		RewriteRuleTokenStream stream_SemiColon=new RewriteRuleTokenStream(adaptor,"token SemiColon");
		RewriteRuleSubtreeStream stream_forUpdate=new RewriteRuleSubtreeStream(adaptor,"rule forUpdate");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_forCondition=new RewriteRuleSubtreeStream(adaptor,"rule forCondition");
		RewriteRuleSubtreeStream stream_arrayEntry=new RewriteRuleSubtreeStream(adaptor,"rule arrayEntry");
		RewriteRuleSubtreeStream stream_cases=new RewriteRuleSubtreeStream(adaptor,"rule cases");
		RewriteRuleSubtreeStream stream_conditional=new RewriteRuleSubtreeStream(adaptor,"rule conditional");
		RewriteRuleSubtreeStream stream_forInit=new RewriteRuleSubtreeStream(adaptor,"rule forInit");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:220:5: ( If '(' ifCondition= expression ')' ifTrue= statement ( conditional )? -> ^( 'if' expression $ifTrue ( conditional )? ) | For '(' forInit forCondition forUpdate ')' statement -> ^( For forInit forCondition forUpdate statement ) | Foreach '(' expression 'as' arrayEntry ')' statement -> ^( Foreach expression arrayEntry statement ) | While '(' (whileCondition= expression )? ')' statement -> ^( While $whileCondition statement ) | Do statement While '(' doCondition= expression ')' ';' -> ^( Do statement $doCondition) | Switch '(' expression ')' '{' cases '}' -> ^( Switch expression cases ) | functionDefinition )
			int alt26=7;
			switch ( input.LA(1) ) {
			case If:
				{
				alt26=1;
				}
				break;
			case For:
				{
				alt26=2;
				}
				break;
			case Foreach:
				{
				alt26=3;
				}
				break;
			case While:
				{
				alt26=4;
				}
				break;
			case Do:
				{
				alt26=5;
				}
				break;
			case Switch:
				{
				alt26=6;
				}
				break;
			case Function:
				{
				alt26=7;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 26, 0, input);
				throw nvae;
			}
			switch (alt26) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:220:7: If '(' ifCondition= expression ')' ifTrue= statement ( conditional )?
					{
					If75=(Token)match(input,If,FOLLOW_If_in_complexStatement1717); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If75);

					char_literal76=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_complexStatement1719); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal76);

					pushFollow(FOLLOW_expression_in_complexStatement1723);
					ifCondition=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(ifCondition.getTree());
					char_literal77=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_complexStatement1725); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal77);

					pushFollow(FOLLOW_statement_in_complexStatement1729);
					ifTrue=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(ifTrue.getTree());
					// com/github/gumtreediff/gen/antlr3/php/Php.g:220:58: ( conditional )?
					int alt24=2;
					alt24 = dfa24.predict(input);
					switch (alt24) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:220:58: conditional
							{
							pushFollow(FOLLOW_conditional_in_complexStatement1731);
							conditional78=conditional();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_conditional.add(conditional78.getTree());
							}
							break;

					}

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

					root_0 = (CommonTree)adaptor.nil();
					// 221:9: -> ^( 'if' expression $ifTrue ( conditional )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:221:12: ^( 'if' expression $ifTrue ( conditional )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(If, "If"), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_ifTrue.nextTree());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:221:38: ( conditional )?
						if ( stream_conditional.hasNext() ) {
							adaptor.addChild(root_1, stream_conditional.nextTree());
						}
						stream_conditional.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:222:7: For '(' forInit forCondition forUpdate ')' statement
					{
					For79=(Token)match(input,For,FOLLOW_For_in_complexStatement1762); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_For.add(For79);

					char_literal80=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_complexStatement1764); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal80);

					pushFollow(FOLLOW_forInit_in_complexStatement1766);
					forInit81=forInit();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_forInit.add(forInit81.getTree());
					pushFollow(FOLLOW_forCondition_in_complexStatement1768);
					forCondition82=forCondition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_forCondition.add(forCondition82.getTree());
					pushFollow(FOLLOW_forUpdate_in_complexStatement1770);
					forUpdate83=forUpdate();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_forUpdate.add(forUpdate83.getTree());
					char_literal84=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_complexStatement1772); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal84);

					pushFollow(FOLLOW_statement_in_complexStatement1774);
					statement85=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement85.getTree());
					// AST REWRITE
					// elements: forCondition, forInit, statement, For, forUpdate
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 222:60: -> ^( For forInit forCondition forUpdate statement )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:222:63: ^( For forInit forCondition forUpdate statement )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_For.nextNode(), root_1);
						adaptor.addChild(root_1, stream_forInit.nextTree());
						adaptor.addChild(root_1, stream_forCondition.nextTree());
						adaptor.addChild(root_1, stream_forUpdate.nextTree());
						adaptor.addChild(root_1, stream_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:223:7: Foreach '(' expression 'as' arrayEntry ')' statement
					{
					Foreach86=(Token)match(input,Foreach,FOLLOW_Foreach_in_complexStatement1796); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Foreach.add(Foreach86);

					char_literal87=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_complexStatement1798); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal87);

					pushFollow(FOLLOW_expression_in_complexStatement1800);
					expression88=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression88.getTree());
					string_literal89=(Token)match(input,112,FOLLOW_112_in_complexStatement1802); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_112.add(string_literal89);

					pushFollow(FOLLOW_arrayEntry_in_complexStatement1804);
					arrayEntry90=arrayEntry();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_arrayEntry.add(arrayEntry90.getTree());
					char_literal91=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_complexStatement1806); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal91);

					pushFollow(FOLLOW_statement_in_complexStatement1808);
					statement92=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement92.getTree());
					// AST REWRITE
					// elements: expression, Foreach, statement, arrayEntry
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 223:60: -> ^( Foreach expression arrayEntry statement )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:223:63: ^( Foreach expression arrayEntry statement )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Foreach.nextNode(), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_arrayEntry.nextTree());
						adaptor.addChild(root_1, stream_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:224:7: While '(' (whileCondition= expression )? ')' statement
					{
					While93=(Token)match(input,While,FOLLOW_While_in_complexStatement1828); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_While.add(While93);

					char_literal94=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_complexStatement1830); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal94);

					// com/github/gumtreediff/gen/antlr3/php/Php.g:224:31: (whileCondition= expression )?
					int alt25=2;
					int LA25_0 = input.LA(1);
					if ( (LA25_0==Ampersand||LA25_0==Array||LA25_0==Bang||LA25_0==Boolean||LA25_0==Clone||LA25_0==Dollar||LA25_0==DoubleQuotedString||LA25_0==HereDoc||LA25_0==IncrementOperator||LA25_0==Integer||LA25_0==Minus||LA25_0==New||LA25_0==OpenBrace||LA25_0==Real||LA25_0==SingleQuotedString||LA25_0==SuppressWarnings||LA25_0==Tilde||LA25_0==UnquotedString) ) {
						alt25=1;
					}
					switch (alt25) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:224:31: whileCondition= expression
							{
							pushFollow(FOLLOW_expression_in_complexStatement1834);
							whileCondition=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(whileCondition.getTree());
							}
							break;

					}

					char_literal95=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_complexStatement1837); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal95);

					pushFollow(FOLLOW_statement_in_complexStatement1839);
					statement96=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement96.getTree());
					// AST REWRITE
					// elements: statement, whileCondition, While
					// token labels: 
					// rule labels: whileCondition, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_whileCondition=new RewriteRuleSubtreeStream(adaptor,"rule whileCondition",whileCondition!=null?whileCondition.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 224:58: -> ^( While $whileCondition statement )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:224:61: ^( While $whileCondition statement )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_While.nextNode(), root_1);
						adaptor.addChild(root_1, stream_whileCondition.nextTree());
						adaptor.addChild(root_1, stream_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:225:7: Do statement While '(' doCondition= expression ')' ';'
					{
					Do97=(Token)match(input,Do,FOLLOW_Do_in_complexStatement1858); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do97);

					pushFollow(FOLLOW_statement_in_complexStatement1860);
					statement98=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement98.getTree());
					While99=(Token)match(input,While,FOLLOW_While_in_complexStatement1862); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_While.add(While99);

					char_literal100=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_complexStatement1864); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal100);

					pushFollow(FOLLOW_expression_in_complexStatement1868);
					doCondition=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(doCondition.getTree());
					char_literal101=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_complexStatement1870); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal101);

					char_literal102=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_complexStatement1872); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SemiColon.add(char_literal102);

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

					root_0 = (CommonTree)adaptor.nil();
					// 225:61: -> ^( Do statement $doCondition)
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:225:64: ^( Do statement $doCondition)
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Do.nextNode(), root_1);
						adaptor.addChild(root_1, stream_statement.nextTree());
						adaptor.addChild(root_1, stream_doCondition.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:226:7: Switch '(' expression ')' '{' cases '}'
					{
					Switch103=(Token)match(input,Switch,FOLLOW_Switch_in_complexStatement1891); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Switch.add(Switch103);

					char_literal104=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_complexStatement1893); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal104);

					pushFollow(FOLLOW_expression_in_complexStatement1895);
					expression105=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression105.getTree());
					char_literal106=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_complexStatement1897); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal106);

					char_literal107=(Token)match(input,OpenCurlyBrace,FOLLOW_OpenCurlyBrace_in_complexStatement1899); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenCurlyBrace.add(char_literal107);

					pushFollow(FOLLOW_cases_in_complexStatement1900);
					cases108=cases();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_cases.add(cases108.getTree());
					char_literal109=(Token)match(input,CloseCurlyBrace,FOLLOW_CloseCurlyBrace_in_complexStatement1901); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseCurlyBrace.add(char_literal109);

					// AST REWRITE
					// elements: expression, cases, Switch
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 226:45: -> ^( Switch expression cases )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:226:48: ^( Switch expression cases )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Switch.nextNode(), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_cases.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:227:7: functionDefinition
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_functionDefinition_in_complexStatement1919);
					functionDefinition110=functionDefinition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, functionDefinition110.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 13, complexStatement_StartIndex); }

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


	public static class simpleStatement_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "simpleStatement"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:230:1: simpleStatement : ( Echo ^ commaList | Throw ^ expression | Global ^ name ( ',' ! name )* | Static ^ variable Equals ! atom | Break ^ ( Integer )? | Continue ^ ( Integer )? | Return ^ ( expression )? | RequireOperator ^ expression | expression );
	public final PhpParser.simpleStatement_return simpleStatement() throws RecognitionException {
		PhpParser.simpleStatement_return retval = new PhpParser.simpleStatement_return();
		retval.start = input.LT(1);
		int simpleStatement_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Echo111=null;
		Token Throw113=null;
		Token Global115=null;
		Token char_literal117=null;
		Token Static119=null;
		Token Equals121=null;
		Token Break123=null;
		Token Integer124=null;
		Token Continue125=null;
		Token Integer126=null;
		Token Return127=null;
		Token RequireOperator129=null;
		ParserRuleReturnScope commaList112 =null;
		ParserRuleReturnScope expression114 =null;
		ParserRuleReturnScope name116 =null;
		ParserRuleReturnScope name118 =null;
		ParserRuleReturnScope variable120 =null;
		ParserRuleReturnScope atom122 =null;
		ParserRuleReturnScope expression128 =null;
		ParserRuleReturnScope expression130 =null;
		ParserRuleReturnScope expression131 =null;

		CommonTree Echo111_tree=null;
		CommonTree Throw113_tree=null;
		CommonTree Global115_tree=null;
		CommonTree char_literal117_tree=null;
		CommonTree Static119_tree=null;
		CommonTree Equals121_tree=null;
		CommonTree Break123_tree=null;
		CommonTree Integer124_tree=null;
		CommonTree Continue125_tree=null;
		CommonTree Integer126_tree=null;
		CommonTree Return127_tree=null;
		CommonTree RequireOperator129_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:231:5: ( Echo ^ commaList | Throw ^ expression | Global ^ name ( ',' ! name )* | Static ^ variable Equals ! atom | Break ^ ( Integer )? | Continue ^ ( Integer )? | Return ^ ( expression )? | RequireOperator ^ expression | expression )
			int alt31=9;
			switch ( input.LA(1) ) {
			case Echo:
				{
				alt31=1;
				}
				break;
			case Throw:
				{
				alt31=2;
				}
				break;
			case Global:
				{
				alt31=3;
				}
				break;
			case Static:
				{
				alt31=4;
				}
				break;
			case Break:
				{
				alt31=5;
				}
				break;
			case Continue:
				{
				alt31=6;
				}
				break;
			case Return:
				{
				alt31=7;
				}
				break;
			case RequireOperator:
				{
				alt31=8;
				}
				break;
			case Ampersand:
			case Array:
			case Bang:
			case Boolean:
			case Clone:
			case Dollar:
			case DoubleQuotedString:
			case HereDoc:
			case IncrementOperator:
			case Integer:
			case Minus:
			case New:
			case OpenBrace:
			case Real:
			case SingleQuotedString:
			case SuppressWarnings:
			case Tilde:
			case UnquotedString:
				{
				alt31=9;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 31, 0, input);
				throw nvae;
			}
			switch (alt31) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:231:7: Echo ^ commaList
					{
					root_0 = (CommonTree)adaptor.nil();


					Echo111=(Token)match(input,Echo,FOLLOW_Echo_in_simpleStatement1936); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Echo111_tree = (CommonTree)adaptor.create(Echo111);
					root_0 = (CommonTree)adaptor.becomeRoot(Echo111_tree, root_0);
					}

					pushFollow(FOLLOW_commaList_in_simpleStatement1939);
					commaList112=commaList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, commaList112.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:232:7: Throw ^ expression
					{
					root_0 = (CommonTree)adaptor.nil();


					Throw113=(Token)match(input,Throw,FOLLOW_Throw_in_simpleStatement1947); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Throw113_tree = (CommonTree)adaptor.create(Throw113);
					root_0 = (CommonTree)adaptor.becomeRoot(Throw113_tree, root_0);
					}

					pushFollow(FOLLOW_expression_in_simpleStatement1950);
					expression114=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression114.getTree());

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:233:7: Global ^ name ( ',' ! name )*
					{
					root_0 = (CommonTree)adaptor.nil();


					Global115=(Token)match(input,Global,FOLLOW_Global_in_simpleStatement1958); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Global115_tree = (CommonTree)adaptor.create(Global115);
					root_0 = (CommonTree)adaptor.becomeRoot(Global115_tree, root_0);
					}

					pushFollow(FOLLOW_name_in_simpleStatement1961);
					name116=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, name116.getTree());

					// com/github/gumtreediff/gen/antlr3/php/Php.g:233:20: ( ',' ! name )*
					loop27:
					while (true) {
						int alt27=2;
						int LA27_0 = input.LA(1);
						if ( (LA27_0==Comma) ) {
							alt27=1;
						}

						switch (alt27) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:233:21: ',' ! name
							{
							char_literal117=(Token)match(input,Comma,FOLLOW_Comma_in_simpleStatement1964); if (state.failed) return retval;
							pushFollow(FOLLOW_name_in_simpleStatement1967);
							name118=name();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, name118.getTree());

							}
							break;

						default :
							break loop27;
						}
					}

					}
					break;
				case 4 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:234:7: Static ^ variable Equals ! atom
					{
					root_0 = (CommonTree)adaptor.nil();


					Static119=(Token)match(input,Static,FOLLOW_Static_in_simpleStatement1977); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Static119_tree = (CommonTree)adaptor.create(Static119);
					root_0 = (CommonTree)adaptor.becomeRoot(Static119_tree, root_0);
					}

					pushFollow(FOLLOW_variable_in_simpleStatement1980);
					variable120=variable();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, variable120.getTree());

					Equals121=(Token)match(input,Equals,FOLLOW_Equals_in_simpleStatement1982); if (state.failed) return retval;
					pushFollow(FOLLOW_atom_in_simpleStatement1985);
					atom122=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, atom122.getTree());

					}
					break;
				case 5 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:235:7: Break ^ ( Integer )?
					{
					root_0 = (CommonTree)adaptor.nil();


					Break123=(Token)match(input,Break,FOLLOW_Break_in_simpleStatement1993); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Break123_tree = (CommonTree)adaptor.create(Break123);
					root_0 = (CommonTree)adaptor.becomeRoot(Break123_tree, root_0);
					}

					// com/github/gumtreediff/gen/antlr3/php/Php.g:235:14: ( Integer )?
					int alt28=2;
					int LA28_0 = input.LA(1);
					if ( (LA28_0==Integer) ) {
						alt28=1;
					}
					switch (alt28) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:235:14: Integer
							{
							Integer124=(Token)match(input,Integer,FOLLOW_Integer_in_simpleStatement1996); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							Integer124_tree = (CommonTree)adaptor.create(Integer124);
							adaptor.addChild(root_0, Integer124_tree);
							}

							}
							break;

					}

					}
					break;
				case 6 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:236:7: Continue ^ ( Integer )?
					{
					root_0 = (CommonTree)adaptor.nil();


					Continue125=(Token)match(input,Continue,FOLLOW_Continue_in_simpleStatement2005); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Continue125_tree = (CommonTree)adaptor.create(Continue125);
					root_0 = (CommonTree)adaptor.becomeRoot(Continue125_tree, root_0);
					}

					// com/github/gumtreediff/gen/antlr3/php/Php.g:236:17: ( Integer )?
					int alt29=2;
					int LA29_0 = input.LA(1);
					if ( (LA29_0==Integer) ) {
						alt29=1;
					}
					switch (alt29) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:236:17: Integer
							{
							Integer126=(Token)match(input,Integer,FOLLOW_Integer_in_simpleStatement2008); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							Integer126_tree = (CommonTree)adaptor.create(Integer126);
							adaptor.addChild(root_0, Integer126_tree);
							}

							}
							break;

					}

					}
					break;
				case 7 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:238:7: Return ^ ( expression )?
					{
					root_0 = (CommonTree)adaptor.nil();


					Return127=(Token)match(input,Return,FOLLOW_Return_in_simpleStatement2022); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Return127_tree = (CommonTree)adaptor.create(Return127);
					root_0 = (CommonTree)adaptor.becomeRoot(Return127_tree, root_0);
					}

					// com/github/gumtreediff/gen/antlr3/php/Php.g:238:15: ( expression )?
					int alt30=2;
					int LA30_0 = input.LA(1);
					if ( (LA30_0==Ampersand||LA30_0==Array||LA30_0==Bang||LA30_0==Boolean||LA30_0==Clone||LA30_0==Dollar||LA30_0==DoubleQuotedString||LA30_0==HereDoc||LA30_0==IncrementOperator||LA30_0==Integer||LA30_0==Minus||LA30_0==New||LA30_0==OpenBrace||LA30_0==Real||LA30_0==SingleQuotedString||LA30_0==SuppressWarnings||LA30_0==Tilde||LA30_0==UnquotedString) ) {
						alt30=1;
					}
					switch (alt30) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:238:15: expression
							{
							pushFollow(FOLLOW_expression_in_simpleStatement2025);
							expression128=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) adaptor.addChild(root_0, expression128.getTree());

							}
							break;

					}

					}
					break;
				case 8 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:239:7: RequireOperator ^ expression
					{
					root_0 = (CommonTree)adaptor.nil();


					RequireOperator129=(Token)match(input,RequireOperator,FOLLOW_RequireOperator_in_simpleStatement2034); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					RequireOperator129_tree = (CommonTree)adaptor.create(RequireOperator129);
					root_0 = (CommonTree)adaptor.becomeRoot(RequireOperator129_tree, root_0);
					}

					pushFollow(FOLLOW_expression_in_simpleStatement2037);
					expression130=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression130.getTree());

					}
					break;
				case 9 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:240:7: expression
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_expression_in_simpleStatement2045);
					expression131=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression131.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 14, simpleStatement_StartIndex); }

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


	public static class conditional_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "conditional"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:244:1: conditional : ( ElseIf '(' ifCondition= expression ')' ifTrue= statement ( conditional )? -> ^( If $ifCondition $ifTrue ( conditional )? ) | Else statement -> statement );
	public final PhpParser.conditional_return conditional() throws RecognitionException {
		PhpParser.conditional_return retval = new PhpParser.conditional_return();
		retval.start = input.LT(1);
		int conditional_StartIndex = input.index();

		CommonTree root_0 = null;

		Token ElseIf132=null;
		Token char_literal133=null;
		Token char_literal134=null;
		Token Else136=null;
		ParserRuleReturnScope ifCondition =null;
		ParserRuleReturnScope ifTrue =null;
		ParserRuleReturnScope conditional135 =null;
		ParserRuleReturnScope statement137 =null;

		CommonTree ElseIf132_tree=null;
		CommonTree char_literal133_tree=null;
		CommonTree char_literal134_tree=null;
		CommonTree Else136_tree=null;
		RewriteRuleTokenStream stream_ElseIf=new RewriteRuleTokenStream(adaptor,"token ElseIf");
		RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
		RewriteRuleTokenStream stream_OpenBrace=new RewriteRuleTokenStream(adaptor,"token OpenBrace");
		RewriteRuleTokenStream stream_CloseBrace=new RewriteRuleTokenStream(adaptor,"token CloseBrace");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_conditional=new RewriteRuleSubtreeStream(adaptor,"rule conditional");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:245:5: ( ElseIf '(' ifCondition= expression ')' ifTrue= statement ( conditional )? -> ^( If $ifCondition $ifTrue ( conditional )? ) | Else statement -> statement )
			int alt33=2;
			int LA33_0 = input.LA(1);
			if ( (LA33_0==ElseIf) ) {
				alt33=1;
			}
			else if ( (LA33_0==Else) ) {
				alt33=2;
			}

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

			switch (alt33) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:245:7: ElseIf '(' ifCondition= expression ')' ifTrue= statement ( conditional )?
					{
					ElseIf132=(Token)match(input,ElseIf,FOLLOW_ElseIf_in_conditional2063); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ElseIf.add(ElseIf132);

					char_literal133=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_conditional2065); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(char_literal133);

					pushFollow(FOLLOW_expression_in_conditional2069);
					ifCondition=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(ifCondition.getTree());
					char_literal134=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_conditional2071); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(char_literal134);

					pushFollow(FOLLOW_statement_in_conditional2075);
					ifTrue=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(ifTrue.getTree());
					// com/github/gumtreediff/gen/antlr3/php/Php.g:245:62: ( conditional )?
					int alt32=2;
					alt32 = dfa32.predict(input);
					switch (alt32) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:245:62: conditional
							{
							pushFollow(FOLLOW_conditional_in_conditional2077);
							conditional135=conditional();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_conditional.add(conditional135.getTree());
							}
							break;

					}

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

					root_0 = (CommonTree)adaptor.nil();
					// 245:75: -> ^( If $ifCondition $ifTrue ( conditional )? )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:245:78: ^( If $ifCondition $ifTrue ( conditional )? )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(If, "If"), root_1);
						adaptor.addChild(root_1, stream_ifCondition.nextTree());
						adaptor.addChild(root_1, stream_ifTrue.nextTree());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:245:104: ( conditional )?
						if ( stream_conditional.hasNext() ) {
							adaptor.addChild(root_1, stream_conditional.nextTree());
						}
						stream_conditional.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:246:7: Else statement
					{
					Else136=(Token)match(input,Else,FOLLOW_Else_in_conditional2101); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else136);

					pushFollow(FOLLOW_statement_in_conditional2103);
					statement137=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement137.getTree());
					// AST REWRITE
					// elements: statement
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 246:22: -> statement
					{
						adaptor.addChild(root_0, stream_statement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 15, conditional_StartIndex); }

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


	public static class forInit_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "forInit"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:249:1: forInit : ( commaList )? ';' -> ^( ForInit ( commaList )? ) ;
	public final PhpParser.forInit_return forInit() throws RecognitionException {
		PhpParser.forInit_return retval = new PhpParser.forInit_return();
		retval.start = input.LT(1);
		int forInit_StartIndex = input.index();

		CommonTree root_0 = null;

		Token char_literal139=null;
		ParserRuleReturnScope commaList138 =null;

		CommonTree char_literal139_tree=null;
		RewriteRuleTokenStream stream_SemiColon=new RewriteRuleTokenStream(adaptor,"token SemiColon");
		RewriteRuleSubtreeStream stream_commaList=new RewriteRuleSubtreeStream(adaptor,"rule commaList");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:250:5: ( ( commaList )? ';' -> ^( ForInit ( commaList )? ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:250:7: ( commaList )? ';'
			{
			// com/github/gumtreediff/gen/antlr3/php/Php.g:250:7: ( commaList )?
			int alt34=2;
			int LA34_0 = input.LA(1);
			if ( (LA34_0==Ampersand||LA34_0==Array||LA34_0==Bang||LA34_0==Boolean||LA34_0==Clone||LA34_0==Dollar||LA34_0==DoubleQuotedString||LA34_0==HereDoc||LA34_0==IncrementOperator||LA34_0==Integer||LA34_0==Minus||LA34_0==New||LA34_0==OpenBrace||LA34_0==Real||LA34_0==SingleQuotedString||LA34_0==SuppressWarnings||LA34_0==Tilde||LA34_0==UnquotedString) ) {
				alt34=1;
			}
			switch (alt34) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:250:7: commaList
					{
					pushFollow(FOLLOW_commaList_in_forInit2124);
					commaList138=commaList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_commaList.add(commaList138.getTree());
					}
					break;

			}

			char_literal139=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_forInit2127); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SemiColon.add(char_literal139);

			// AST REWRITE
			// elements: commaList
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 250:22: -> ^( ForInit ( commaList )? )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:250:25: ^( ForInit ( commaList )? )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ForInit, "ForInit"), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:250:35: ( commaList )?
				if ( stream_commaList.hasNext() ) {
					adaptor.addChild(root_1, stream_commaList.nextTree());
				}
				stream_commaList.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 16, forInit_StartIndex); }

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


	public static class forCondition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "forCondition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:253:1: forCondition : ( commaList )? ';' -> ^( ForCondition ( commaList )? ) ;
	public final PhpParser.forCondition_return forCondition() throws RecognitionException {
		PhpParser.forCondition_return retval = new PhpParser.forCondition_return();
		retval.start = input.LT(1);
		int forCondition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token char_literal141=null;
		ParserRuleReturnScope commaList140 =null;

		CommonTree char_literal141_tree=null;
		RewriteRuleTokenStream stream_SemiColon=new RewriteRuleTokenStream(adaptor,"token SemiColon");
		RewriteRuleSubtreeStream stream_commaList=new RewriteRuleSubtreeStream(adaptor,"rule commaList");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:254:5: ( ( commaList )? ';' -> ^( ForCondition ( commaList )? ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:254:7: ( commaList )? ';'
			{
			// com/github/gumtreediff/gen/antlr3/php/Php.g:254:7: ( commaList )?
			int alt35=2;
			int LA35_0 = input.LA(1);
			if ( (LA35_0==Ampersand||LA35_0==Array||LA35_0==Bang||LA35_0==Boolean||LA35_0==Clone||LA35_0==Dollar||LA35_0==DoubleQuotedString||LA35_0==HereDoc||LA35_0==IncrementOperator||LA35_0==Integer||LA35_0==Minus||LA35_0==New||LA35_0==OpenBrace||LA35_0==Real||LA35_0==SingleQuotedString||LA35_0==SuppressWarnings||LA35_0==Tilde||LA35_0==UnquotedString) ) {
				alt35=1;
			}
			switch (alt35) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:254:7: commaList
					{
					pushFollow(FOLLOW_commaList_in_forCondition2153);
					commaList140=commaList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_commaList.add(commaList140.getTree());
					}
					break;

			}

			char_literal141=(Token)match(input,SemiColon,FOLLOW_SemiColon_in_forCondition2156); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SemiColon.add(char_literal141);

			// AST REWRITE
			// elements: commaList
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 254:22: -> ^( ForCondition ( commaList )? )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:254:25: ^( ForCondition ( commaList )? )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ForCondition, "ForCondition"), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:254:40: ( commaList )?
				if ( stream_commaList.hasNext() ) {
					adaptor.addChild(root_1, stream_commaList.nextTree());
				}
				stream_commaList.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 17, forCondition_StartIndex); }

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


	public static class forUpdate_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "forUpdate"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:257:1: forUpdate : ( commaList )? -> ^( ForUpdate ( commaList )? ) ;
	public final PhpParser.forUpdate_return forUpdate() throws RecognitionException {
		PhpParser.forUpdate_return retval = new PhpParser.forUpdate_return();
		retval.start = input.LT(1);
		int forUpdate_StartIndex = input.index();

		CommonTree root_0 = null;

		ParserRuleReturnScope commaList142 =null;

		RewriteRuleSubtreeStream stream_commaList=new RewriteRuleSubtreeStream(adaptor,"rule commaList");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:258:5: ( ( commaList )? -> ^( ForUpdate ( commaList )? ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:258:7: ( commaList )?
			{
			// com/github/gumtreediff/gen/antlr3/php/Php.g:258:7: ( commaList )?
			int alt36=2;
			int LA36_0 = input.LA(1);
			if ( (LA36_0==Ampersand||LA36_0==Array||LA36_0==Bang||LA36_0==Boolean||LA36_0==Clone||LA36_0==Dollar||LA36_0==DoubleQuotedString||LA36_0==HereDoc||LA36_0==IncrementOperator||LA36_0==Integer||LA36_0==Minus||LA36_0==New||LA36_0==OpenBrace||LA36_0==Real||LA36_0==SingleQuotedString||LA36_0==SuppressWarnings||LA36_0==Tilde||LA36_0==UnquotedString) ) {
				alt36=1;
			}
			switch (alt36) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:258:7: commaList
					{
					pushFollow(FOLLOW_commaList_in_forUpdate2186);
					commaList142=commaList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_commaList.add(commaList142.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: commaList
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 258:18: -> ^( ForUpdate ( commaList )? )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:258:21: ^( ForUpdate ( commaList )? )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ForUpdate, "ForUpdate"), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:258:33: ( commaList )?
				if ( stream_commaList.hasNext() ) {
					adaptor.addChild(root_1, stream_commaList.nextTree());
				}
				stream_commaList.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 18, forUpdate_StartIndex); }

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


	public static class cases_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "cases"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:261:1: cases : ( casestatement )* ( defaultcase )? ;
	public final PhpParser.cases_return cases() throws RecognitionException {
		PhpParser.cases_return retval = new PhpParser.cases_return();
		retval.start = input.LT(1);
		int cases_StartIndex = input.index();

		CommonTree root_0 = null;

		ParserRuleReturnScope casestatement143 =null;
		ParserRuleReturnScope defaultcase144 =null;


		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:262:5: ( ( casestatement )* ( defaultcase )? )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:262:7: ( casestatement )* ( defaultcase )?
			{
			root_0 = (CommonTree)adaptor.nil();


			// com/github/gumtreediff/gen/antlr3/php/Php.g:262:7: ( casestatement )*
			loop37:
			while (true) {
				int alt37=2;
				int LA37_0 = input.LA(1);
				if ( (LA37_0==Case) ) {
					alt37=1;
				}

				switch (alt37) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:262:7: casestatement
					{
					pushFollow(FOLLOW_casestatement_in_cases2214);
					casestatement143=casestatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, casestatement143.getTree());

					}
					break;

				default :
					break loop37;
				}
			}

			// com/github/gumtreediff/gen/antlr3/php/Php.g:262:23: ( defaultcase )?
			int alt38=2;
			int LA38_0 = input.LA(1);
			if ( (LA38_0==Default) ) {
				alt38=1;
			}
			switch (alt38) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:262:23: defaultcase
					{
					pushFollow(FOLLOW_defaultcase_in_cases2218);
					defaultcase144=defaultcase();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, defaultcase144.getTree());

					}
					break;

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 19, cases_StartIndex); }

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


	public static class casestatement_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "casestatement"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:265:1: casestatement : Case ^ expression ':' ! ( statement )* ;
	public final PhpParser.casestatement_return casestatement() throws RecognitionException {
		PhpParser.casestatement_return retval = new PhpParser.casestatement_return();
		retval.start = input.LT(1);
		int casestatement_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Case145=null;
		Token char_literal147=null;
		ParserRuleReturnScope expression146 =null;
		ParserRuleReturnScope statement148 =null;

		CommonTree Case145_tree=null;
		CommonTree char_literal147_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:266:5: ( Case ^ expression ':' ! ( statement )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:266:7: Case ^ expression ':' ! ( statement )*
			{
			root_0 = (CommonTree)adaptor.nil();


			Case145=(Token)match(input,Case,FOLLOW_Case_in_casestatement2236); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Case145_tree = (CommonTree)adaptor.create(Case145);
			root_0 = (CommonTree)adaptor.becomeRoot(Case145_tree, root_0);
			}

			pushFollow(FOLLOW_expression_in_casestatement2239);
			expression146=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, expression146.getTree());

			char_literal147=(Token)match(input,Colon,FOLLOW_Colon_in_casestatement2241); if (state.failed) return retval;
			// com/github/gumtreediff/gen/antlr3/php/Php.g:266:29: ( statement )*
			loop39:
			while (true) {
				int alt39=2;
				int LA39_0 = input.LA(1);
				if ( (LA39_0==Abstract||LA39_0==Ampersand||LA39_0==Array||LA39_0==Bang||(LA39_0 >= BodyString && LA39_0 <= Break)||LA39_0==Class||LA39_0==Clone||LA39_0==Continue||(LA39_0 >= Do && LA39_0 <= Dollar)||(LA39_0 >= DoubleQuotedString && LA39_0 <= Echo)||LA39_0==For||LA39_0==Foreach||(LA39_0 >= Function && LA39_0 <= HereDoc)||LA39_0==If||LA39_0==IncrementOperator||(LA39_0 >= Integer && LA39_0 <= Interface)||LA39_0==Minus||LA39_0==New||(LA39_0 >= OpenBrace && LA39_0 <= OpenCurlyBrace)||LA39_0==Real||(LA39_0 >= RequireOperator && LA39_0 <= Return)||LA39_0==SingleQuotedString||(LA39_0 >= Static && LA39_0 <= Tilde)||LA39_0==UnquotedString||LA39_0==While) ) {
					alt39=1;
				}

				switch (alt39) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:266:29: statement
					{
					pushFollow(FOLLOW_statement_in_casestatement2244);
					statement148=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, statement148.getTree());

					}
					break;

				default :
					break loop39;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 20, casestatement_StartIndex); }

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


	public static class defaultcase_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "defaultcase"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:269:1: defaultcase : ( Default ^ ':' ! ( statement )* ) ;
	public final PhpParser.defaultcase_return defaultcase() throws RecognitionException {
		PhpParser.defaultcase_return retval = new PhpParser.defaultcase_return();
		retval.start = input.LT(1);
		int defaultcase_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Default149=null;
		Token char_literal150=null;
		ParserRuleReturnScope statement151 =null;

		CommonTree Default149_tree=null;
		CommonTree char_literal150_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:270:5: ( ( Default ^ ':' ! ( statement )* ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:270:7: ( Default ^ ':' ! ( statement )* )
			{
			root_0 = (CommonTree)adaptor.nil();


			// com/github/gumtreediff/gen/antlr3/php/Php.g:270:7: ( Default ^ ':' ! ( statement )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:270:8: Default ^ ':' ! ( statement )*
			{
			Default149=(Token)match(input,Default,FOLLOW_Default_in_defaultcase2264); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Default149_tree = (CommonTree)adaptor.create(Default149);
			root_0 = (CommonTree)adaptor.becomeRoot(Default149_tree, root_0);
			}

			char_literal150=(Token)match(input,Colon,FOLLOW_Colon_in_defaultcase2267); if (state.failed) return retval;
			// com/github/gumtreediff/gen/antlr3/php/Php.g:270:22: ( statement )*
			loop40:
			while (true) {
				int alt40=2;
				int LA40_0 = input.LA(1);
				if ( (LA40_0==Abstract||LA40_0==Ampersand||LA40_0==Array||LA40_0==Bang||(LA40_0 >= BodyString && LA40_0 <= Break)||LA40_0==Class||LA40_0==Clone||LA40_0==Continue||(LA40_0 >= Do && LA40_0 <= Dollar)||(LA40_0 >= DoubleQuotedString && LA40_0 <= Echo)||LA40_0==For||LA40_0==Foreach||(LA40_0 >= Function && LA40_0 <= HereDoc)||LA40_0==If||LA40_0==IncrementOperator||(LA40_0 >= Integer && LA40_0 <= Interface)||LA40_0==Minus||LA40_0==New||(LA40_0 >= OpenBrace && LA40_0 <= OpenCurlyBrace)||LA40_0==Real||(LA40_0 >= RequireOperator && LA40_0 <= Return)||LA40_0==SingleQuotedString||(LA40_0 >= Static && LA40_0 <= Tilde)||LA40_0==UnquotedString||LA40_0==While) ) {
					alt40=1;
				}

				switch (alt40) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:270:22: statement
					{
					pushFollow(FOLLOW_statement_in_defaultcase2270);
					statement151=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, statement151.getTree());

					}
					break;

				default :
					break loop40;
				}
			}

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 21, defaultcase_StartIndex); }

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


	public static class functionDefinition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "functionDefinition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:273:1: functionDefinition : Function UnquotedString parametersDefinition bracketedBlock -> ^( Function UnquotedString parametersDefinition bracketedBlock ) ;
	public final PhpParser.functionDefinition_return functionDefinition() throws RecognitionException {
		PhpParser.functionDefinition_return retval = new PhpParser.functionDefinition_return();
		retval.start = input.LT(1);
		int functionDefinition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Function152=null;
		Token UnquotedString153=null;
		ParserRuleReturnScope parametersDefinition154 =null;
		ParserRuleReturnScope bracketedBlock155 =null;

		CommonTree Function152_tree=null;
		CommonTree UnquotedString153_tree=null;
		RewriteRuleTokenStream stream_Function=new RewriteRuleTokenStream(adaptor,"token Function");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleSubtreeStream stream_bracketedBlock=new RewriteRuleSubtreeStream(adaptor,"rule bracketedBlock");
		RewriteRuleSubtreeStream stream_parametersDefinition=new RewriteRuleSubtreeStream(adaptor,"rule parametersDefinition");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:274:5: ( Function UnquotedString parametersDefinition bracketedBlock -> ^( Function UnquotedString parametersDefinition bracketedBlock ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:274:7: Function UnquotedString parametersDefinition bracketedBlock
			{
			Function152=(Token)match(input,Function,FOLLOW_Function_in_functionDefinition2289); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Function.add(Function152);

			UnquotedString153=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_functionDefinition2291); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString153);

			pushFollow(FOLLOW_parametersDefinition_in_functionDefinition2293);
			parametersDefinition154=parametersDefinition();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_parametersDefinition.add(parametersDefinition154.getTree());
			pushFollow(FOLLOW_bracketedBlock_in_functionDefinition2295);
			bracketedBlock155=bracketedBlock();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_bracketedBlock.add(bracketedBlock155.getTree());
			// AST REWRITE
			// elements: UnquotedString, parametersDefinition, bracketedBlock, 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 274:67: -> ^( Function UnquotedString parametersDefinition bracketedBlock )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:275:9: ^( Function UnquotedString parametersDefinition bracketedBlock )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot(stream_Function.nextNode(), root_1);
				adaptor.addChild(root_1, stream_UnquotedString.nextNode());
				adaptor.addChild(root_1, stream_parametersDefinition.nextTree());
				adaptor.addChild(root_1, stream_bracketedBlock.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 22, functionDefinition_StartIndex); }

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


	public static class parametersDefinition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "parametersDefinition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:278:1: parametersDefinition : OpenBrace ( paramDef ( Comma paramDef )* )? CloseBrace -> ^( Params ( paramDef )* ) ;
	public final PhpParser.parametersDefinition_return parametersDefinition() throws RecognitionException {
		PhpParser.parametersDefinition_return retval = new PhpParser.parametersDefinition_return();
		retval.start = input.LT(1);
		int parametersDefinition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token OpenBrace156=null;
		Token Comma158=null;
		Token CloseBrace160=null;
		ParserRuleReturnScope paramDef157 =null;
		ParserRuleReturnScope paramDef159 =null;

		CommonTree OpenBrace156_tree=null;
		CommonTree Comma158_tree=null;
		CommonTree CloseBrace160_tree=null;
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_OpenBrace=new RewriteRuleTokenStream(adaptor,"token OpenBrace");
		RewriteRuleTokenStream stream_CloseBrace=new RewriteRuleTokenStream(adaptor,"token CloseBrace");
		RewriteRuleSubtreeStream stream_paramDef=new RewriteRuleSubtreeStream(adaptor,"rule paramDef");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:279:5: ( OpenBrace ( paramDef ( Comma paramDef )* )? CloseBrace -> ^( Params ( paramDef )* ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:279:7: OpenBrace ( paramDef ( Comma paramDef )* )? CloseBrace
			{
			OpenBrace156=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_parametersDefinition2333); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OpenBrace.add(OpenBrace156);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:279:17: ( paramDef ( Comma paramDef )* )?
			int alt42=2;
			int LA42_0 = input.LA(1);
			if ( (LA42_0==Ampersand||LA42_0==Dollar) ) {
				alt42=1;
			}
			switch (alt42) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:279:18: paramDef ( Comma paramDef )*
					{
					pushFollow(FOLLOW_paramDef_in_parametersDefinition2336);
					paramDef157=paramDef();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_paramDef.add(paramDef157.getTree());
					// com/github/gumtreediff/gen/antlr3/php/Php.g:279:27: ( Comma paramDef )*
					loop41:
					while (true) {
						int alt41=2;
						int LA41_0 = input.LA(1);
						if ( (LA41_0==Comma) ) {
							alt41=1;
						}

						switch (alt41) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:279:28: Comma paramDef
							{
							Comma158=(Token)match(input,Comma,FOLLOW_Comma_in_parametersDefinition2339); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(Comma158);

							pushFollow(FOLLOW_paramDef_in_parametersDefinition2341);
							paramDef159=paramDef();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_paramDef.add(paramDef159.getTree());
							}
							break;

						default :
							break loop41;
						}
					}

					}
					break;

			}

			CloseBrace160=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_parametersDefinition2347); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CloseBrace.add(CloseBrace160);

			// AST REWRITE
			// elements: paramDef
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 279:58: -> ^( Params ( paramDef )* )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:279:61: ^( Params ( paramDef )* )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Params, "Params"), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:279:70: ( paramDef )*
				while ( stream_paramDef.hasNext() ) {
					adaptor.addChild(root_1, stream_paramDef.nextTree());
				}
				stream_paramDef.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 23, parametersDefinition_StartIndex); }

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


	public static class paramDef_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "paramDef"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:282:1: paramDef : paramName ( Equals ^ atom )? ;
	public final PhpParser.paramDef_return paramDef() throws RecognitionException {
		PhpParser.paramDef_return retval = new PhpParser.paramDef_return();
		retval.start = input.LT(1);
		int paramDef_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Equals162=null;
		ParserRuleReturnScope paramName161 =null;
		ParserRuleReturnScope atom163 =null;

		CommonTree Equals162_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:283:5: ( paramName ( Equals ^ atom )? )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:283:7: paramName ( Equals ^ atom )?
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_paramName_in_paramDef2374);
			paramName161=paramName();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, paramName161.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:283:17: ( Equals ^ atom )?
			int alt43=2;
			int LA43_0 = input.LA(1);
			if ( (LA43_0==Equals) ) {
				alt43=1;
			}
			switch (alt43) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:283:18: Equals ^ atom
					{
					Equals162=(Token)match(input,Equals,FOLLOW_Equals_in_paramDef2377); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Equals162_tree = (CommonTree)adaptor.create(Equals162);
					root_0 = (CommonTree)adaptor.becomeRoot(Equals162_tree, root_0);
					}

					pushFollow(FOLLOW_atom_in_paramDef2380);
					atom163=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, atom163.getTree());

					}
					break;

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 24, paramDef_StartIndex); }

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


	public static class paramName_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "paramName"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:286:1: paramName : ( Dollar ^ UnquotedString | Ampersand Dollar UnquotedString -> ^( Ampersand ^( Dollar UnquotedString ) ) );
	public final PhpParser.paramName_return paramName() throws RecognitionException {
		PhpParser.paramName_return retval = new PhpParser.paramName_return();
		retval.start = input.LT(1);
		int paramName_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Dollar164=null;
		Token UnquotedString165=null;
		Token Ampersand166=null;
		Token Dollar167=null;
		Token UnquotedString168=null;

		CommonTree Dollar164_tree=null;
		CommonTree UnquotedString165_tree=null;
		CommonTree Ampersand166_tree=null;
		CommonTree Dollar167_tree=null;
		CommonTree UnquotedString168_tree=null;
		RewriteRuleTokenStream stream_Dollar=new RewriteRuleTokenStream(adaptor,"token Dollar");
		RewriteRuleTokenStream stream_UnquotedString=new RewriteRuleTokenStream(adaptor,"token UnquotedString");
		RewriteRuleTokenStream stream_Ampersand=new RewriteRuleTokenStream(adaptor,"token Ampersand");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:287:5: ( Dollar ^ UnquotedString | Ampersand Dollar UnquotedString -> ^( Ampersand ^( Dollar UnquotedString ) ) )
			int alt44=2;
			int LA44_0 = input.LA(1);
			if ( (LA44_0==Dollar) ) {
				alt44=1;
			}
			else if ( (LA44_0==Ampersand) ) {
				alt44=2;
			}

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

			switch (alt44) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:287:7: Dollar ^ UnquotedString
					{
					root_0 = (CommonTree)adaptor.nil();


					Dollar164=(Token)match(input,Dollar,FOLLOW_Dollar_in_paramName2399); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Dollar164_tree = (CommonTree)adaptor.create(Dollar164);
					root_0 = (CommonTree)adaptor.becomeRoot(Dollar164_tree, root_0);
					}

					UnquotedString165=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_paramName2402); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					UnquotedString165_tree = (CommonTree)adaptor.create(UnquotedString165);
					adaptor.addChild(root_0, UnquotedString165_tree);
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:288:7: Ampersand Dollar UnquotedString
					{
					Ampersand166=(Token)match(input,Ampersand,FOLLOW_Ampersand_in_paramName2410); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Ampersand.add(Ampersand166);

					Dollar167=(Token)match(input,Dollar,FOLLOW_Dollar_in_paramName2412); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Dollar.add(Dollar167);

					UnquotedString168=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_paramName2414); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UnquotedString.add(UnquotedString168);

					// AST REWRITE
					// elements: Ampersand, Dollar, UnquotedString
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 288:39: -> ^( Ampersand ^( Dollar UnquotedString ) )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:288:42: ^( Ampersand ^( Dollar UnquotedString ) )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot(stream_Ampersand.nextNode(), root_1);
						// com/github/gumtreediff/gen/antlr3/php/Php.g:288:54: ^( Dollar UnquotedString )
						{
						CommonTree root_2 = (CommonTree)adaptor.nil();
						root_2 = (CommonTree)adaptor.becomeRoot(stream_Dollar.nextNode(), root_2);
						adaptor.addChild(root_2, stream_UnquotedString.nextNode());
						adaptor.addChild(root_1, root_2);
						}

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 25, paramName_StartIndex); }

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


	public static class commaList_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "commaList"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:291:1: commaList : expression ( ',' ! expression )* ;
	public final PhpParser.commaList_return commaList() throws RecognitionException {
		PhpParser.commaList_return retval = new PhpParser.commaList_return();
		retval.start = input.LT(1);
		int commaList_StartIndex = input.index();

		CommonTree root_0 = null;

		Token char_literal170=null;
		ParserRuleReturnScope expression169 =null;
		ParserRuleReturnScope expression171 =null;

		CommonTree char_literal170_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:292:5: ( expression ( ',' ! expression )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:292:7: expression ( ',' ! expression )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_expression_in_commaList2443);
			expression169=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, expression169.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:292:18: ( ',' ! expression )*
			loop45:
			while (true) {
				int alt45=2;
				int LA45_0 = input.LA(1);
				if ( (LA45_0==Comma) ) {
					alt45=1;
				}

				switch (alt45) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:292:19: ',' ! expression
					{
					char_literal170=(Token)match(input,Comma,FOLLOW_Comma_in_commaList2446); if (state.failed) return retval;
					pushFollow(FOLLOW_expression_in_commaList2449);
					expression171=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression171.getTree());

					}
					break;

				default :
					break loop45;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 26, commaList_StartIndex); }

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


	public static class expression_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "expression"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:295:1: expression : weakLogicalOr ;
	public final PhpParser.expression_return expression() throws RecognitionException {
		PhpParser.expression_return retval = new PhpParser.expression_return();
		retval.start = input.LT(1);
		int expression_StartIndex = input.index();

		CommonTree root_0 = null;

		ParserRuleReturnScope weakLogicalOr172 =null;


		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:296:5: ( weakLogicalOr )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:296:7: weakLogicalOr
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_weakLogicalOr_in_expression2473);
			weakLogicalOr172=weakLogicalOr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, weakLogicalOr172.getTree());

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 27, expression_StartIndex); }

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


	public static class weakLogicalOr_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "weakLogicalOr"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:299:1: weakLogicalOr : weakLogicalXor ( Or ^ weakLogicalXor )* ;
	public final PhpParser.weakLogicalOr_return weakLogicalOr() throws RecognitionException {
		PhpParser.weakLogicalOr_return retval = new PhpParser.weakLogicalOr_return();
		retval.start = input.LT(1);
		int weakLogicalOr_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Or174=null;
		ParserRuleReturnScope weakLogicalXor173 =null;
		ParserRuleReturnScope weakLogicalXor175 =null;

		CommonTree Or174_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:300:5: ( weakLogicalXor ( Or ^ weakLogicalXor )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:300:7: weakLogicalXor ( Or ^ weakLogicalXor )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_weakLogicalXor_in_weakLogicalOr2490);
			weakLogicalXor173=weakLogicalXor();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, weakLogicalXor173.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:300:22: ( Or ^ weakLogicalXor )*
			loop46:
			while (true) {
				int alt46=2;
				int LA46_0 = input.LA(1);
				if ( (LA46_0==Or) ) {
					int LA46_10 = input.LA(2);
					if ( (synpred67_Php()) ) {
						alt46=1;
					}

				}

				switch (alt46) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:300:23: Or ^ weakLogicalXor
					{
					Or174=(Token)match(input,Or,FOLLOW_Or_in_weakLogicalOr2493); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Or174_tree = (CommonTree)adaptor.create(Or174);
					root_0 = (CommonTree)adaptor.becomeRoot(Or174_tree, root_0);
					}

					pushFollow(FOLLOW_weakLogicalXor_in_weakLogicalOr2496);
					weakLogicalXor175=weakLogicalXor();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, weakLogicalXor175.getTree());

					}
					break;

				default :
					break loop46;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 28, weakLogicalOr_StartIndex); }

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


	public static class weakLogicalXor_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "weakLogicalXor"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:303:1: weakLogicalXor : weakLogicalAnd ( Xor ^ weakLogicalAnd )* ;
	public final PhpParser.weakLogicalXor_return weakLogicalXor() throws RecognitionException {
		PhpParser.weakLogicalXor_return retval = new PhpParser.weakLogicalXor_return();
		retval.start = input.LT(1);
		int weakLogicalXor_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Xor177=null;
		ParserRuleReturnScope weakLogicalAnd176 =null;
		ParserRuleReturnScope weakLogicalAnd178 =null;

		CommonTree Xor177_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:304:5: ( weakLogicalAnd ( Xor ^ weakLogicalAnd )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:304:7: weakLogicalAnd ( Xor ^ weakLogicalAnd )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_weakLogicalAnd_in_weakLogicalXor2515);
			weakLogicalAnd176=weakLogicalAnd();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, weakLogicalAnd176.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:304:22: ( Xor ^ weakLogicalAnd )*
			loop47:
			while (true) {
				int alt47=2;
				int LA47_0 = input.LA(1);
				if ( (LA47_0==Xor) ) {
					int LA47_10 = input.LA(2);
					if ( (synpred68_Php()) ) {
						alt47=1;
					}

				}

				switch (alt47) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:304:23: Xor ^ weakLogicalAnd
					{
					Xor177=(Token)match(input,Xor,FOLLOW_Xor_in_weakLogicalXor2518); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Xor177_tree = (CommonTree)adaptor.create(Xor177);
					root_0 = (CommonTree)adaptor.becomeRoot(Xor177_tree, root_0);
					}

					pushFollow(FOLLOW_weakLogicalAnd_in_weakLogicalXor2521);
					weakLogicalAnd178=weakLogicalAnd();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, weakLogicalAnd178.getTree());

					}
					break;

				default :
					break loop47;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 29, weakLogicalXor_StartIndex); }

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


	public static class weakLogicalAnd_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "weakLogicalAnd"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:307:1: weakLogicalAnd : assignment ( And ^ assignment )* ;
	public final PhpParser.weakLogicalAnd_return weakLogicalAnd() throws RecognitionException {
		PhpParser.weakLogicalAnd_return retval = new PhpParser.weakLogicalAnd_return();
		retval.start = input.LT(1);
		int weakLogicalAnd_StartIndex = input.index();

		CommonTree root_0 = null;

		Token And180=null;
		ParserRuleReturnScope assignment179 =null;
		ParserRuleReturnScope assignment181 =null;

		CommonTree And180_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:308:5: ( assignment ( And ^ assignment )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:308:7: assignment ( And ^ assignment )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_assignment_in_weakLogicalAnd2544);
			assignment179=assignment();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, assignment179.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:308:18: ( And ^ assignment )*
			loop48:
			while (true) {
				int alt48=2;
				int LA48_0 = input.LA(1);
				if ( (LA48_0==And) ) {
					int LA48_10 = input.LA(2);
					if ( (synpred69_Php()) ) {
						alt48=1;
					}

				}

				switch (alt48) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:308:19: And ^ assignment
					{
					And180=(Token)match(input,And,FOLLOW_And_in_weakLogicalAnd2547); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					And180_tree = (CommonTree)adaptor.create(And180);
					root_0 = (CommonTree)adaptor.becomeRoot(And180_tree, root_0);
					}

					pushFollow(FOLLOW_assignment_in_weakLogicalAnd2550);
					assignment181=assignment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, assignment181.getTree());

					}
					break;

				default :
					break loop48;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 30, weakLogicalAnd_StartIndex); }

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


	public static class assignment_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "assignment"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:311:1: assignment : ( name ( ( Equals | AsignmentOperator ) ^ assignment ) | ternary );
	public final PhpParser.assignment_return assignment() throws RecognitionException {
		PhpParser.assignment_return retval = new PhpParser.assignment_return();
		retval.start = input.LT(1);
		int assignment_StartIndex = input.index();

		CommonTree root_0 = null;

		Token set183=null;
		ParserRuleReturnScope name182 =null;
		ParserRuleReturnScope assignment184 =null;
		ParserRuleReturnScope ternary185 =null;

		CommonTree set183_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:312:5: ( name ( ( Equals | AsignmentOperator ) ^ assignment ) | ternary )
			int alt49=2;
			switch ( input.LA(1) ) {
			case UnquotedString:
				{
				switch ( input.LA(2) ) {
				case ClassMember:
					{
					int LA49_17 = input.LA(3);
					if ( (synpred71_Php()) ) {
						alt49=1;
					}
					else if ( (true) ) {
						alt49=2;
					}

					}
					break;
				case OpenSquareBrace:
					{
					int LA49_18 = input.LA(3);
					if ( (synpred71_Php()) ) {
						alt49=1;
					}
					else if ( (true) ) {
						alt49=2;
					}

					}
					break;
				case InstanceMember:
					{
					int LA49_19 = input.LA(3);
					if ( (synpred71_Php()) ) {
						alt49=1;
					}
					else if ( (true) ) {
						alt49=2;
					}

					}
					break;
				case AsignmentOperator:
				case Equals:
					{
					alt49=1;
					}
					break;
				case EOF:
				case Ampersand:
				case And:
				case ArrayAssign:
				case Asterisk:
				case BodyString:
				case CloseBrace:
				case CloseSquareBrace:
				case Colon:
				case Comma:
				case ComparisionOperator:
				case Dot:
				case EqualityOperator:
				case Forwardslash:
				case IncrementOperator:
				case Instanceof:
				case LogicalAnd:
				case LogicalOr:
				case Minus:
				case OpenBrace:
				case Or:
				case Percent:
				case Pipe:
				case Plus:
				case QuestionMark:
				case SemiColon:
				case ShiftOperator:
				case Xor:
				case 112:
					{
					alt49=2;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 49, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case Dollar:
				{
				int LA49_2 = input.LA(2);
				if ( (LA49_2==Dollar) ) {
					int LA49_46 = input.LA(3);
					if ( (synpred71_Php()) ) {
						alt49=1;
					}
					else if ( (true) ) {
						alt49=2;
					}

				}
				else if ( (LA49_2==UnquotedString) ) {
					int LA49_47 = input.LA(3);
					if ( (synpred71_Php()) ) {
						alt49=1;
					}
					else if ( (true) ) {
						alt49=2;
					}

				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 49, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case Ampersand:
			case Array:
			case Bang:
			case Boolean:
			case Clone:
			case DoubleQuotedString:
			case HereDoc:
			case IncrementOperator:
			case Integer:
			case Minus:
			case New:
			case OpenBrace:
			case Real:
			case SingleQuotedString:
			case SuppressWarnings:
			case Tilde:
				{
				alt49=2;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 49, 0, input);
				throw nvae;
			}
			switch (alt49) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:312:7: name ( ( Equals | AsignmentOperator ) ^ assignment )
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_name_in_assignment2569);
					name182=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, name182.getTree());

					// com/github/gumtreediff/gen/antlr3/php/Php.g:312:12: ( ( Equals | AsignmentOperator ) ^ assignment )
					// com/github/gumtreediff/gen/antlr3/php/Php.g:312:13: ( Equals | AsignmentOperator ) ^ assignment
					{
					set183=input.LT(1);
					set183=input.LT(1);
					if ( input.LA(1)==AsignmentOperator||input.LA(1)==Equals ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(set183), root_0);
						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_assignment_in_assignment2581);
					assignment184=assignment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, assignment184.getTree());

					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:313:7: ternary
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_ternary_in_assignment2590);
					ternary185=ternary();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, ternary185.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 31, assignment_StartIndex); }

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


	public static class ternary_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "ternary"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:316:1: ternary : ( logicalOr QuestionMark expression Colon expression -> ^( IfExpression logicalOr ( expression )* ) | logicalOr );
	public final PhpParser.ternary_return ternary() throws RecognitionException {
		PhpParser.ternary_return retval = new PhpParser.ternary_return();
		retval.start = input.LT(1);
		int ternary_StartIndex = input.index();

		CommonTree root_0 = null;

		Token QuestionMark187=null;
		Token Colon189=null;
		ParserRuleReturnScope logicalOr186 =null;
		ParserRuleReturnScope expression188 =null;
		ParserRuleReturnScope expression190 =null;
		ParserRuleReturnScope logicalOr191 =null;

		CommonTree QuestionMark187_tree=null;
		CommonTree Colon189_tree=null;
		RewriteRuleTokenStream stream_QuestionMark=new RewriteRuleTokenStream(adaptor,"token QuestionMark");
		RewriteRuleTokenStream stream_Colon=new RewriteRuleTokenStream(adaptor,"token Colon");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_logicalOr=new RewriteRuleSubtreeStream(adaptor,"rule logicalOr");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:317:5: ( logicalOr QuestionMark expression Colon expression -> ^( IfExpression logicalOr ( expression )* ) | logicalOr )
			int alt50=2;
			alt50 = dfa50.predict(input);
			switch (alt50) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:317:7: logicalOr QuestionMark expression Colon expression
					{
					pushFollow(FOLLOW_logicalOr_in_ternary2607);
					logicalOr186=logicalOr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_logicalOr.add(logicalOr186.getTree());
					QuestionMark187=(Token)match(input,QuestionMark,FOLLOW_QuestionMark_in_ternary2609); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QuestionMark.add(QuestionMark187);

					pushFollow(FOLLOW_expression_in_ternary2611);
					expression188=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression188.getTree());
					Colon189=(Token)match(input,Colon,FOLLOW_Colon_in_ternary2613); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Colon.add(Colon189);

					pushFollow(FOLLOW_expression_in_ternary2615);
					expression190=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression190.getTree());
					// AST REWRITE
					// elements: expression, logicalOr
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 317:58: -> ^( IfExpression logicalOr ( expression )* )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:317:61: ^( IfExpression logicalOr ( expression )* )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(IfExpression, "IfExpression"), root_1);
						adaptor.addChild(root_1, stream_logicalOr.nextTree());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:317:86: ( expression )*
						while ( stream_expression.hasNext() ) {
							adaptor.addChild(root_1, stream_expression.nextTree());
						}
						stream_expression.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:318:7: logicalOr
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_logicalOr_in_ternary2634);
					logicalOr191=logicalOr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalOr191.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 32, ternary_StartIndex); }

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


	public static class logicalOr_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "logicalOr"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:321:1: logicalOr : logicalAnd ( LogicalOr ^ logicalAnd )* ;
	public final PhpParser.logicalOr_return logicalOr() throws RecognitionException {
		PhpParser.logicalOr_return retval = new PhpParser.logicalOr_return();
		retval.start = input.LT(1);
		int logicalOr_StartIndex = input.index();

		CommonTree root_0 = null;

		Token LogicalOr193=null;
		ParserRuleReturnScope logicalAnd192 =null;
		ParserRuleReturnScope logicalAnd194 =null;

		CommonTree LogicalOr193_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:322:5: ( logicalAnd ( LogicalOr ^ logicalAnd )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:322:7: logicalAnd ( LogicalOr ^ logicalAnd )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_logicalAnd_in_logicalOr2655);
			logicalAnd192=logicalAnd();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalAnd192.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:322:18: ( LogicalOr ^ logicalAnd )*
			loop51:
			while (true) {
				int alt51=2;
				int LA51_0 = input.LA(1);
				if ( (LA51_0==LogicalOr) ) {
					alt51=1;
				}

				switch (alt51) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:322:19: LogicalOr ^ logicalAnd
					{
					LogicalOr193=(Token)match(input,LogicalOr,FOLLOW_LogicalOr_in_logicalOr2658); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					LogicalOr193_tree = (CommonTree)adaptor.create(LogicalOr193);
					root_0 = (CommonTree)adaptor.becomeRoot(LogicalOr193_tree, root_0);
					}

					pushFollow(FOLLOW_logicalAnd_in_logicalOr2661);
					logicalAnd194=logicalAnd();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalAnd194.getTree());

					}
					break;

				default :
					break loop51;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 33, logicalOr_StartIndex); }

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


	public static class logicalAnd_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "logicalAnd"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:325:1: logicalAnd : bitwiseOr ( LogicalAnd ^ bitwiseOr )* ;
	public final PhpParser.logicalAnd_return logicalAnd() throws RecognitionException {
		PhpParser.logicalAnd_return retval = new PhpParser.logicalAnd_return();
		retval.start = input.LT(1);
		int logicalAnd_StartIndex = input.index();

		CommonTree root_0 = null;

		Token LogicalAnd196=null;
		ParserRuleReturnScope bitwiseOr195 =null;
		ParserRuleReturnScope bitwiseOr197 =null;

		CommonTree LogicalAnd196_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:326:5: ( bitwiseOr ( LogicalAnd ^ bitwiseOr )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:326:7: bitwiseOr ( LogicalAnd ^ bitwiseOr )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_bitwiseOr_in_logicalAnd2680);
			bitwiseOr195=bitwiseOr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseOr195.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:326:17: ( LogicalAnd ^ bitwiseOr )*
			loop52:
			while (true) {
				int alt52=2;
				int LA52_0 = input.LA(1);
				if ( (LA52_0==LogicalAnd) ) {
					alt52=1;
				}

				switch (alt52) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:326:18: LogicalAnd ^ bitwiseOr
					{
					LogicalAnd196=(Token)match(input,LogicalAnd,FOLLOW_LogicalAnd_in_logicalAnd2683); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					LogicalAnd196_tree = (CommonTree)adaptor.create(LogicalAnd196);
					root_0 = (CommonTree)adaptor.becomeRoot(LogicalAnd196_tree, root_0);
					}

					pushFollow(FOLLOW_bitwiseOr_in_logicalAnd2686);
					bitwiseOr197=bitwiseOr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, bitwiseOr197.getTree());

					}
					break;

				default :
					break loop52;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 34, logicalAnd_StartIndex); }

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


	public static class bitwiseOr_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "bitwiseOr"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:329:1: bitwiseOr : bitWiseAnd ( Pipe ^ bitWiseAnd )* ;
	public final PhpParser.bitwiseOr_return bitwiseOr() throws RecognitionException {
		PhpParser.bitwiseOr_return retval = new PhpParser.bitwiseOr_return();
		retval.start = input.LT(1);
		int bitwiseOr_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Pipe199=null;
		ParserRuleReturnScope bitWiseAnd198 =null;
		ParserRuleReturnScope bitWiseAnd200 =null;

		CommonTree Pipe199_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:330:5: ( bitWiseAnd ( Pipe ^ bitWiseAnd )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:330:7: bitWiseAnd ( Pipe ^ bitWiseAnd )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_bitWiseAnd_in_bitwiseOr2709);
			bitWiseAnd198=bitWiseAnd();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, bitWiseAnd198.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:330:18: ( Pipe ^ bitWiseAnd )*
			loop53:
			while (true) {
				int alt53=2;
				int LA53_0 = input.LA(1);
				if ( (LA53_0==Pipe) ) {
					alt53=1;
				}

				switch (alt53) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:330:19: Pipe ^ bitWiseAnd
					{
					Pipe199=(Token)match(input,Pipe,FOLLOW_Pipe_in_bitwiseOr2712); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Pipe199_tree = (CommonTree)adaptor.create(Pipe199);
					root_0 = (CommonTree)adaptor.becomeRoot(Pipe199_tree, root_0);
					}

					pushFollow(FOLLOW_bitWiseAnd_in_bitwiseOr2715);
					bitWiseAnd200=bitWiseAnd();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, bitWiseAnd200.getTree());

					}
					break;

				default :
					break loop53;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 35, bitwiseOr_StartIndex); }

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


	public static class bitWiseAnd_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "bitWiseAnd"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:333:1: bitWiseAnd : equalityCheck ( Ampersand ^ equalityCheck )* ;
	public final PhpParser.bitWiseAnd_return bitWiseAnd() throws RecognitionException {
		PhpParser.bitWiseAnd_return retval = new PhpParser.bitWiseAnd_return();
		retval.start = input.LT(1);
		int bitWiseAnd_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Ampersand202=null;
		ParserRuleReturnScope equalityCheck201 =null;
		ParserRuleReturnScope equalityCheck203 =null;

		CommonTree Ampersand202_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:334:5: ( equalityCheck ( Ampersand ^ equalityCheck )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:334:7: equalityCheck ( Ampersand ^ equalityCheck )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_equalityCheck_in_bitWiseAnd2734);
			equalityCheck201=equalityCheck();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, equalityCheck201.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:334:21: ( Ampersand ^ equalityCheck )*
			loop54:
			while (true) {
				int alt54=2;
				int LA54_0 = input.LA(1);
				if ( (LA54_0==Ampersand) ) {
					alt54=1;
				}

				switch (alt54) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:334:22: Ampersand ^ equalityCheck
					{
					Ampersand202=(Token)match(input,Ampersand,FOLLOW_Ampersand_in_bitWiseAnd2737); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Ampersand202_tree = (CommonTree)adaptor.create(Ampersand202);
					root_0 = (CommonTree)adaptor.becomeRoot(Ampersand202_tree, root_0);
					}

					pushFollow(FOLLOW_equalityCheck_in_bitWiseAnd2740);
					equalityCheck203=equalityCheck();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, equalityCheck203.getTree());

					}
					break;

				default :
					break loop54;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 36, bitWiseAnd_StartIndex); }

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


	public static class equalityCheck_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "equalityCheck"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:337:1: equalityCheck : comparisionCheck ( EqualityOperator ^ comparisionCheck )? ;
	public final PhpParser.equalityCheck_return equalityCheck() throws RecognitionException {
		PhpParser.equalityCheck_return retval = new PhpParser.equalityCheck_return();
		retval.start = input.LT(1);
		int equalityCheck_StartIndex = input.index();

		CommonTree root_0 = null;

		Token EqualityOperator205=null;
		ParserRuleReturnScope comparisionCheck204 =null;
		ParserRuleReturnScope comparisionCheck206 =null;

		CommonTree EqualityOperator205_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:338:5: ( comparisionCheck ( EqualityOperator ^ comparisionCheck )? )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:338:7: comparisionCheck ( EqualityOperator ^ comparisionCheck )?
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_comparisionCheck_in_equalityCheck2759);
			comparisionCheck204=comparisionCheck();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, comparisionCheck204.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:338:24: ( EqualityOperator ^ comparisionCheck )?
			int alt55=2;
			int LA55_0 = input.LA(1);
			if ( (LA55_0==EqualityOperator) ) {
				alt55=1;
			}
			switch (alt55) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:338:25: EqualityOperator ^ comparisionCheck
					{
					EqualityOperator205=(Token)match(input,EqualityOperator,FOLLOW_EqualityOperator_in_equalityCheck2762); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					EqualityOperator205_tree = (CommonTree)adaptor.create(EqualityOperator205);
					root_0 = (CommonTree)adaptor.becomeRoot(EqualityOperator205_tree, root_0);
					}

					pushFollow(FOLLOW_comparisionCheck_in_equalityCheck2765);
					comparisionCheck206=comparisionCheck();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, comparisionCheck206.getTree());

					}
					break;

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 37, equalityCheck_StartIndex); }

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


	public static class comparisionCheck_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "comparisionCheck"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:341:1: comparisionCheck : bitWiseShift ( ComparisionOperator ^ bitWiseShift )? ;
	public final PhpParser.comparisionCheck_return comparisionCheck() throws RecognitionException {
		PhpParser.comparisionCheck_return retval = new PhpParser.comparisionCheck_return();
		retval.start = input.LT(1);
		int comparisionCheck_StartIndex = input.index();

		CommonTree root_0 = null;

		Token ComparisionOperator208=null;
		ParserRuleReturnScope bitWiseShift207 =null;
		ParserRuleReturnScope bitWiseShift209 =null;

		CommonTree ComparisionOperator208_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:342:5: ( bitWiseShift ( ComparisionOperator ^ bitWiseShift )? )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:342:7: bitWiseShift ( ComparisionOperator ^ bitWiseShift )?
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_bitWiseShift_in_comparisionCheck2788);
			bitWiseShift207=bitWiseShift();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, bitWiseShift207.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:342:20: ( ComparisionOperator ^ bitWiseShift )?
			int alt56=2;
			int LA56_0 = input.LA(1);
			if ( (LA56_0==ComparisionOperator) ) {
				alt56=1;
			}
			switch (alt56) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:342:21: ComparisionOperator ^ bitWiseShift
					{
					ComparisionOperator208=(Token)match(input,ComparisionOperator,FOLLOW_ComparisionOperator_in_comparisionCheck2791); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					ComparisionOperator208_tree = (CommonTree)adaptor.create(ComparisionOperator208);
					root_0 = (CommonTree)adaptor.becomeRoot(ComparisionOperator208_tree, root_0);
					}

					pushFollow(FOLLOW_bitWiseShift_in_comparisionCheck2794);
					bitWiseShift209=bitWiseShift();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, bitWiseShift209.getTree());

					}
					break;

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 38, comparisionCheck_StartIndex); }

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


	public static class bitWiseShift_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "bitWiseShift"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:345:1: bitWiseShift : addition ( ShiftOperator ^ addition )* ;
	public final PhpParser.bitWiseShift_return bitWiseShift() throws RecognitionException {
		PhpParser.bitWiseShift_return retval = new PhpParser.bitWiseShift_return();
		retval.start = input.LT(1);
		int bitWiseShift_StartIndex = input.index();

		CommonTree root_0 = null;

		Token ShiftOperator211=null;
		ParserRuleReturnScope addition210 =null;
		ParserRuleReturnScope addition212 =null;

		CommonTree ShiftOperator211_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:346:5: ( addition ( ShiftOperator ^ addition )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:346:7: addition ( ShiftOperator ^ addition )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_addition_in_bitWiseShift2813);
			addition210=addition();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, addition210.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:346:16: ( ShiftOperator ^ addition )*
			loop57:
			while (true) {
				int alt57=2;
				int LA57_0 = input.LA(1);
				if ( (LA57_0==ShiftOperator) ) {
					alt57=1;
				}

				switch (alt57) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:346:17: ShiftOperator ^ addition
					{
					ShiftOperator211=(Token)match(input,ShiftOperator,FOLLOW_ShiftOperator_in_bitWiseShift2816); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					ShiftOperator211_tree = (CommonTree)adaptor.create(ShiftOperator211);
					root_0 = (CommonTree)adaptor.becomeRoot(ShiftOperator211_tree, root_0);
					}

					pushFollow(FOLLOW_addition_in_bitWiseShift2819);
					addition212=addition();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, addition212.getTree());

					}
					break;

				default :
					break loop57;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 39, bitWiseShift_StartIndex); }

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


	public static class addition_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "addition"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:349:1: addition : multiplication ( ( Plus | Minus | Dot ) ^ multiplication )* ;
	public final PhpParser.addition_return addition() throws RecognitionException {
		PhpParser.addition_return retval = new PhpParser.addition_return();
		retval.start = input.LT(1);
		int addition_StartIndex = input.index();

		CommonTree root_0 = null;

		Token set214=null;
		ParserRuleReturnScope multiplication213 =null;
		ParserRuleReturnScope multiplication215 =null;

		CommonTree set214_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:350:5: ( multiplication ( ( Plus | Minus | Dot ) ^ multiplication )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:350:7: multiplication ( ( Plus | Minus | Dot ) ^ multiplication )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_multiplication_in_addition2842);
			multiplication213=multiplication();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, multiplication213.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:350:22: ( ( Plus | Minus | Dot ) ^ multiplication )*
			loop58:
			while (true) {
				int alt58=2;
				int LA58_0 = input.LA(1);
				if ( (LA58_0==Dot||LA58_0==Minus||LA58_0==Plus) ) {
					alt58=1;
				}

				switch (alt58) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:350:23: ( Plus | Minus | Dot ) ^ multiplication
					{
					set214=input.LT(1);
					set214=input.LT(1);
					if ( input.LA(1)==Dot||input.LA(1)==Minus||input.LA(1)==Plus ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(set214), root_0);
						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_multiplication_in_addition2858);
					multiplication215=multiplication();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, multiplication215.getTree());

					}
					break;

				default :
					break loop58;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 40, addition_StartIndex); }

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


	public static class multiplication_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "multiplication"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:353:1: multiplication : logicalNot ( ( Asterisk | Forwardslash | Percent ) ^ logicalNot )* ;
	public final PhpParser.multiplication_return multiplication() throws RecognitionException {
		PhpParser.multiplication_return retval = new PhpParser.multiplication_return();
		retval.start = input.LT(1);
		int multiplication_StartIndex = input.index();

		CommonTree root_0 = null;

		Token set217=null;
		ParserRuleReturnScope logicalNot216 =null;
		ParserRuleReturnScope logicalNot218 =null;

		CommonTree set217_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:354:5: ( logicalNot ( ( Asterisk | Forwardslash | Percent ) ^ logicalNot )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:354:7: logicalNot ( ( Asterisk | Forwardslash | Percent ) ^ logicalNot )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_logicalNot_in_multiplication2877);
			logicalNot216=logicalNot();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalNot216.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:354:18: ( ( Asterisk | Forwardslash | Percent ) ^ logicalNot )*
			loop59:
			while (true) {
				int alt59=2;
				int LA59_0 = input.LA(1);
				if ( (LA59_0==Asterisk||LA59_0==Forwardslash||LA59_0==Percent) ) {
					alt59=1;
				}

				switch (alt59) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:354:19: ( Asterisk | Forwardslash | Percent ) ^ logicalNot
					{
					set217=input.LT(1);
					set217=input.LT(1);
					if ( input.LA(1)==Asterisk||input.LA(1)==Forwardslash||input.LA(1)==Percent ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(set217), root_0);
						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_logicalNot_in_multiplication2893);
					logicalNot218=logicalNot();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalNot218.getTree());

					}
					break;

				default :
					break loop59;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 41, multiplication_StartIndex); }

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


	public static class logicalNot_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "logicalNot"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:357:1: logicalNot : ( Bang ^ logicalNot | instanceOf );
	public final PhpParser.logicalNot_return logicalNot() throws RecognitionException {
		PhpParser.logicalNot_return retval = new PhpParser.logicalNot_return();
		retval.start = input.LT(1);
		int logicalNot_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Bang219=null;
		ParserRuleReturnScope logicalNot220 =null;
		ParserRuleReturnScope instanceOf221 =null;

		CommonTree Bang219_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:358:5: ( Bang ^ logicalNot | instanceOf )
			int alt60=2;
			int LA60_0 = input.LA(1);
			if ( (LA60_0==Bang) ) {
				alt60=1;
			}
			else if ( (LA60_0==Ampersand||LA60_0==Array||LA60_0==Boolean||LA60_0==Clone||LA60_0==Dollar||LA60_0==DoubleQuotedString||LA60_0==HereDoc||LA60_0==IncrementOperator||LA60_0==Integer||LA60_0==Minus||LA60_0==New||LA60_0==OpenBrace||LA60_0==Real||LA60_0==SingleQuotedString||LA60_0==SuppressWarnings||LA60_0==Tilde||LA60_0==UnquotedString) ) {
				alt60=2;
			}

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

			switch (alt60) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:358:7: Bang ^ logicalNot
					{
					root_0 = (CommonTree)adaptor.nil();


					Bang219=(Token)match(input,Bang,FOLLOW_Bang_in_logicalNot2912); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Bang219_tree = (CommonTree)adaptor.create(Bang219);
					root_0 = (CommonTree)adaptor.becomeRoot(Bang219_tree, root_0);
					}

					pushFollow(FOLLOW_logicalNot_in_logicalNot2915);
					logicalNot220=logicalNot();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, logicalNot220.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:359:7: instanceOf
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_instanceOf_in_logicalNot2923);
					instanceOf221=instanceOf();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, instanceOf221.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 42, logicalNot_StartIndex); }

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


	public static class instanceOf_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "instanceOf"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:362:1: instanceOf : negateOrCast ( Instanceof ^ negateOrCast )? ;
	public final PhpParser.instanceOf_return instanceOf() throws RecognitionException {
		PhpParser.instanceOf_return retval = new PhpParser.instanceOf_return();
		retval.start = input.LT(1);
		int instanceOf_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Instanceof223=null;
		ParserRuleReturnScope negateOrCast222 =null;
		ParserRuleReturnScope negateOrCast224 =null;

		CommonTree Instanceof223_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:363:5: ( negateOrCast ( Instanceof ^ negateOrCast )? )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:363:7: negateOrCast ( Instanceof ^ negateOrCast )?
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_negateOrCast_in_instanceOf2940);
			negateOrCast222=negateOrCast();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, negateOrCast222.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:363:20: ( Instanceof ^ negateOrCast )?
			int alt61=2;
			int LA61_0 = input.LA(1);
			if ( (LA61_0==Instanceof) ) {
				alt61=1;
			}
			switch (alt61) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:363:21: Instanceof ^ negateOrCast
					{
					Instanceof223=(Token)match(input,Instanceof,FOLLOW_Instanceof_in_instanceOf2943); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Instanceof223_tree = (CommonTree)adaptor.create(Instanceof223);
					root_0 = (CommonTree)adaptor.becomeRoot(Instanceof223_tree, root_0);
					}

					pushFollow(FOLLOW_negateOrCast_in_instanceOf2946);
					negateOrCast224=negateOrCast();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, negateOrCast224.getTree());

					}
					break;

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 43, instanceOf_StartIndex); }

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


	public static class negateOrCast_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "negateOrCast"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:366:1: negateOrCast : ( ( Tilde | Minus | SuppressWarnings ) ^ increment | OpenBrace PrimitiveType CloseBrace increment -> ^( Cast PrimitiveType increment ) | OpenBrace ! weakLogicalAnd CloseBrace !| increment );
	public final PhpParser.negateOrCast_return negateOrCast() throws RecognitionException {
		PhpParser.negateOrCast_return retval = new PhpParser.negateOrCast_return();
		retval.start = input.LT(1);
		int negateOrCast_StartIndex = input.index();

		CommonTree root_0 = null;

		Token set225=null;
		Token OpenBrace227=null;
		Token PrimitiveType228=null;
		Token CloseBrace229=null;
		Token OpenBrace231=null;
		Token CloseBrace233=null;
		ParserRuleReturnScope increment226 =null;
		ParserRuleReturnScope increment230 =null;
		ParserRuleReturnScope weakLogicalAnd232 =null;
		ParserRuleReturnScope increment234 =null;

		CommonTree set225_tree=null;
		CommonTree OpenBrace227_tree=null;
		CommonTree PrimitiveType228_tree=null;
		CommonTree CloseBrace229_tree=null;
		CommonTree OpenBrace231_tree=null;
		CommonTree CloseBrace233_tree=null;
		RewriteRuleTokenStream stream_OpenBrace=new RewriteRuleTokenStream(adaptor,"token OpenBrace");
		RewriteRuleTokenStream stream_PrimitiveType=new RewriteRuleTokenStream(adaptor,"token PrimitiveType");
		RewriteRuleTokenStream stream_CloseBrace=new RewriteRuleTokenStream(adaptor,"token CloseBrace");
		RewriteRuleSubtreeStream stream_increment=new RewriteRuleSubtreeStream(adaptor,"rule increment");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:367:5: ( ( Tilde | Minus | SuppressWarnings ) ^ increment | OpenBrace PrimitiveType CloseBrace increment -> ^( Cast PrimitiveType increment ) | OpenBrace ! weakLogicalAnd CloseBrace !| increment )
			int alt62=4;
			switch ( input.LA(1) ) {
			case Minus:
			case SuppressWarnings:
			case Tilde:
				{
				alt62=1;
				}
				break;
			case OpenBrace:
				{
				int LA62_2 = input.LA(2);
				if ( (LA62_2==PrimitiveType) ) {
					alt62=2;
				}
				else if ( (LA62_2==Ampersand||LA62_2==Array||LA62_2==Bang||LA62_2==Boolean||LA62_2==Clone||LA62_2==Dollar||LA62_2==DoubleQuotedString||LA62_2==HereDoc||LA62_2==IncrementOperator||LA62_2==Integer||LA62_2==Minus||LA62_2==New||LA62_2==OpenBrace||LA62_2==Real||LA62_2==SingleQuotedString||LA62_2==SuppressWarnings||LA62_2==Tilde||LA62_2==UnquotedString) ) {
					alt62=3;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 62, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case Ampersand:
			case Array:
			case Boolean:
			case Clone:
			case Dollar:
			case DoubleQuotedString:
			case HereDoc:
			case IncrementOperator:
			case Integer:
			case New:
			case Real:
			case SingleQuotedString:
			case UnquotedString:
				{
				alt62=4;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 62, 0, input);
				throw nvae;
			}
			switch (alt62) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:367:7: ( Tilde | Minus | SuppressWarnings ) ^ increment
					{
					root_0 = (CommonTree)adaptor.nil();


					set225=input.LT(1);
					set225=input.LT(1);
					if ( input.LA(1)==Minus||input.LA(1)==SuppressWarnings||input.LA(1)==Tilde ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(set225), root_0);
						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_increment_in_negateOrCast2978);
					increment226=increment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, increment226.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:368:7: OpenBrace PrimitiveType CloseBrace increment
					{
					OpenBrace227=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_negateOrCast2986); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(OpenBrace227);

					PrimitiveType228=(Token)match(input,PrimitiveType,FOLLOW_PrimitiveType_in_negateOrCast2988); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PrimitiveType.add(PrimitiveType228);

					CloseBrace229=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_negateOrCast2990); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(CloseBrace229);

					pushFollow(FOLLOW_increment_in_negateOrCast2992);
					increment230=increment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_increment.add(increment230.getTree());
					// AST REWRITE
					// elements: PrimitiveType, increment
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 368:52: -> ^( Cast PrimitiveType increment )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:368:55: ^( Cast PrimitiveType increment )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Cast, "Cast"), root_1);
						adaptor.addChild(root_1, stream_PrimitiveType.nextNode());
						adaptor.addChild(root_1, stream_increment.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:369:7: OpenBrace ! weakLogicalAnd CloseBrace !
					{
					root_0 = (CommonTree)adaptor.nil();


					OpenBrace231=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_negateOrCast3010); if (state.failed) return retval;
					pushFollow(FOLLOW_weakLogicalAnd_in_negateOrCast3013);
					weakLogicalAnd232=weakLogicalAnd();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, weakLogicalAnd232.getTree());

					CloseBrace233=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_negateOrCast3015); if (state.failed) return retval;
					}
					break;
				case 4 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:370:7: increment
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_increment_in_negateOrCast3024);
					increment234=increment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, increment234.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 44, negateOrCast_StartIndex); }

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


	public static class increment_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "increment"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:373:1: increment : ( IncrementOperator name -> ^( Prefix IncrementOperator name ) | name IncrementOperator -> ^( Postfix IncrementOperator name ) | newOrClone );
	public final PhpParser.increment_return increment() throws RecognitionException {
		PhpParser.increment_return retval = new PhpParser.increment_return();
		retval.start = input.LT(1);
		int increment_StartIndex = input.index();

		CommonTree root_0 = null;

		Token IncrementOperator235=null;
		Token IncrementOperator238=null;
		ParserRuleReturnScope name236 =null;
		ParserRuleReturnScope name237 =null;
		ParserRuleReturnScope newOrClone239 =null;

		CommonTree IncrementOperator235_tree=null;
		CommonTree IncrementOperator238_tree=null;
		RewriteRuleTokenStream stream_IncrementOperator=new RewriteRuleTokenStream(adaptor,"token IncrementOperator");
		RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"rule name");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:374:5: ( IncrementOperator name -> ^( Prefix IncrementOperator name ) | name IncrementOperator -> ^( Postfix IncrementOperator name ) | newOrClone )
			int alt63=3;
			switch ( input.LA(1) ) {
			case IncrementOperator:
				{
				alt63=1;
				}
				break;
			case UnquotedString:
				{
				switch ( input.LA(2) ) {
				case ClassMember:
					{
					int LA63_14 = input.LA(3);
					if ( (synpred94_Php()) ) {
						alt63=2;
					}
					else if ( (true) ) {
						alt63=3;
					}

					}
					break;
				case OpenSquareBrace:
					{
					int LA63_15 = input.LA(3);
					if ( (synpred94_Php()) ) {
						alt63=2;
					}
					else if ( (true) ) {
						alt63=3;
					}

					}
					break;
				case InstanceMember:
					{
					int LA63_16 = input.LA(3);
					if ( (synpred94_Php()) ) {
						alt63=2;
					}
					else if ( (true) ) {
						alt63=3;
					}

					}
					break;
				case IncrementOperator:
					{
					alt63=2;
					}
					break;
				case EOF:
				case Ampersand:
				case And:
				case ArrayAssign:
				case Asterisk:
				case BodyString:
				case CloseBrace:
				case CloseSquareBrace:
				case Colon:
				case Comma:
				case ComparisionOperator:
				case Dot:
				case EqualityOperator:
				case Forwardslash:
				case Instanceof:
				case LogicalAnd:
				case LogicalOr:
				case Minus:
				case OpenBrace:
				case Or:
				case Percent:
				case Pipe:
				case Plus:
				case QuestionMark:
				case SemiColon:
				case ShiftOperator:
				case Xor:
				case 112:
					{
					alt63=3;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 63, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case Dollar:
				{
				int LA63_3 = input.LA(2);
				if ( (LA63_3==Dollar) ) {
					int LA63_42 = input.LA(3);
					if ( (synpred94_Php()) ) {
						alt63=2;
					}
					else if ( (true) ) {
						alt63=3;
					}

				}
				else if ( (LA63_3==UnquotedString) ) {
					int LA63_43 = input.LA(3);
					if ( (synpred94_Php()) ) {
						alt63=2;
					}
					else if ( (true) ) {
						alt63=3;
					}

				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 63, 3, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case Ampersand:
			case Array:
			case Boolean:
			case Clone:
			case DoubleQuotedString:
			case HereDoc:
			case Integer:
			case New:
			case Real:
			case SingleQuotedString:
				{
				alt63=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 63, 0, input);
				throw nvae;
			}
			switch (alt63) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:374:7: IncrementOperator name
					{
					IncrementOperator235=(Token)match(input,IncrementOperator,FOLLOW_IncrementOperator_in_increment3041); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IncrementOperator.add(IncrementOperator235);

					pushFollow(FOLLOW_name_in_increment3043);
					name236=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_name.add(name236.getTree());
					// AST REWRITE
					// elements: name, IncrementOperator
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 374:30: -> ^( Prefix IncrementOperator name )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:374:33: ^( Prefix IncrementOperator name )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Prefix, "Prefix"), root_1);
						adaptor.addChild(root_1, stream_IncrementOperator.nextNode());
						adaptor.addChild(root_1, stream_name.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:375:7: name IncrementOperator
					{
					pushFollow(FOLLOW_name_in_increment3061);
					name237=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_name.add(name237.getTree());
					IncrementOperator238=(Token)match(input,IncrementOperator,FOLLOW_IncrementOperator_in_increment3063); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IncrementOperator.add(IncrementOperator238);

					// AST REWRITE
					// elements: IncrementOperator, name
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 375:30: -> ^( Postfix IncrementOperator name )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:375:33: ^( Postfix IncrementOperator name )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Postfix, "Postfix"), root_1);
						adaptor.addChild(root_1, stream_IncrementOperator.nextNode());
						adaptor.addChild(root_1, stream_name.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:376:7: newOrClone
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_newOrClone_in_increment3081);
					newOrClone239=newOrClone();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, newOrClone239.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 45, increment_StartIndex); }

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


	public static class newOrClone_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "newOrClone"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:379:1: newOrClone : ( New ^ nameOrFunctionCall | Clone ^ name | atomOrReference );
	public final PhpParser.newOrClone_return newOrClone() throws RecognitionException {
		PhpParser.newOrClone_return retval = new PhpParser.newOrClone_return();
		retval.start = input.LT(1);
		int newOrClone_StartIndex = input.index();

		CommonTree root_0 = null;

		Token New240=null;
		Token Clone242=null;
		ParserRuleReturnScope nameOrFunctionCall241 =null;
		ParserRuleReturnScope name243 =null;
		ParserRuleReturnScope atomOrReference244 =null;

		CommonTree New240_tree=null;
		CommonTree Clone242_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:380:5: ( New ^ nameOrFunctionCall | Clone ^ name | atomOrReference )
			int alt64=3;
			switch ( input.LA(1) ) {
			case New:
				{
				alt64=1;
				}
				break;
			case Clone:
				{
				alt64=2;
				}
				break;
			case Ampersand:
			case Array:
			case Boolean:
			case Dollar:
			case DoubleQuotedString:
			case HereDoc:
			case Integer:
			case Real:
			case SingleQuotedString:
			case UnquotedString:
				{
				alt64=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 64, 0, input);
				throw nvae;
			}
			switch (alt64) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:380:7: New ^ nameOrFunctionCall
					{
					root_0 = (CommonTree)adaptor.nil();


					New240=(Token)match(input,New,FOLLOW_New_in_newOrClone3098); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					New240_tree = (CommonTree)adaptor.create(New240);
					root_0 = (CommonTree)adaptor.becomeRoot(New240_tree, root_0);
					}

					pushFollow(FOLLOW_nameOrFunctionCall_in_newOrClone3101);
					nameOrFunctionCall241=nameOrFunctionCall();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, nameOrFunctionCall241.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:381:7: Clone ^ name
					{
					root_0 = (CommonTree)adaptor.nil();


					Clone242=(Token)match(input,Clone,FOLLOW_Clone_in_newOrClone3109); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Clone242_tree = (CommonTree)adaptor.create(Clone242);
					root_0 = (CommonTree)adaptor.becomeRoot(Clone242_tree, root_0);
					}

					pushFollow(FOLLOW_name_in_newOrClone3112);
					name243=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, name243.getTree());

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:382:7: atomOrReference
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_atomOrReference_in_newOrClone3120);
					atomOrReference244=atomOrReference();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, atomOrReference244.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 46, newOrClone_StartIndex); }

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


	public static class atomOrReference_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "atomOrReference"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:385:1: atomOrReference : ( atom | reference );
	public final PhpParser.atomOrReference_return atomOrReference() throws RecognitionException {
		PhpParser.atomOrReference_return retval = new PhpParser.atomOrReference_return();
		retval.start = input.LT(1);
		int atomOrReference_StartIndex = input.index();

		CommonTree root_0 = null;

		ParserRuleReturnScope atom245 =null;
		ParserRuleReturnScope reference246 =null;


		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 47) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:386:5: ( atom | reference )
			int alt65=2;
			int LA65_0 = input.LA(1);
			if ( (LA65_0==Array||LA65_0==Boolean||LA65_0==DoubleQuotedString||LA65_0==HereDoc||LA65_0==Integer||LA65_0==Real||LA65_0==SingleQuotedString) ) {
				alt65=1;
			}
			else if ( (LA65_0==Ampersand||LA65_0==Dollar||LA65_0==UnquotedString) ) {
				alt65=2;
			}

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

			switch (alt65) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:386:7: atom
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_atom_in_atomOrReference3137);
					atom245=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, atom245.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:387:7: reference
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_reference_in_atomOrReference3145);
					reference246=reference();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, reference246.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 47, atomOrReference_StartIndex); }

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


	public static class arrayDeclaration_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "arrayDeclaration"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:390:1: arrayDeclaration : Array OpenBrace ( arrayEntry ( Comma arrayEntry )* )? CloseBrace -> ^( Array ( arrayEntry )* ) ;
	public final PhpParser.arrayDeclaration_return arrayDeclaration() throws RecognitionException {
		PhpParser.arrayDeclaration_return retval = new PhpParser.arrayDeclaration_return();
		retval.start = input.LT(1);
		int arrayDeclaration_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Array247=null;
		Token OpenBrace248=null;
		Token Comma250=null;
		Token CloseBrace252=null;
		ParserRuleReturnScope arrayEntry249 =null;
		ParserRuleReturnScope arrayEntry251 =null;

		CommonTree Array247_tree=null;
		CommonTree OpenBrace248_tree=null;
		CommonTree Comma250_tree=null;
		CommonTree CloseBrace252_tree=null;
		RewriteRuleTokenStream stream_Array=new RewriteRuleTokenStream(adaptor,"token Array");
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_OpenBrace=new RewriteRuleTokenStream(adaptor,"token OpenBrace");
		RewriteRuleTokenStream stream_CloseBrace=new RewriteRuleTokenStream(adaptor,"token CloseBrace");
		RewriteRuleSubtreeStream stream_arrayEntry=new RewriteRuleSubtreeStream(adaptor,"rule arrayEntry");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 48) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:391:5: ( Array OpenBrace ( arrayEntry ( Comma arrayEntry )* )? CloseBrace -> ^( Array ( arrayEntry )* ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:391:7: Array OpenBrace ( arrayEntry ( Comma arrayEntry )* )? CloseBrace
			{
			Array247=(Token)match(input,Array,FOLLOW_Array_in_arrayDeclaration3162); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Array.add(Array247);

			OpenBrace248=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_arrayDeclaration3164); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OpenBrace.add(OpenBrace248);

			// com/github/gumtreediff/gen/antlr3/php/Php.g:391:23: ( arrayEntry ( Comma arrayEntry )* )?
			int alt67=2;
			int LA67_0 = input.LA(1);
			if ( (LA67_0==Ampersand||LA67_0==Array||LA67_0==Bang||LA67_0==Boolean||LA67_0==Clone||LA67_0==Dollar||LA67_0==DoubleQuotedString||LA67_0==HereDoc||LA67_0==IncrementOperator||LA67_0==Integer||LA67_0==Minus||LA67_0==New||LA67_0==OpenBrace||LA67_0==Real||LA67_0==SingleQuotedString||LA67_0==SuppressWarnings||LA67_0==Tilde||LA67_0==UnquotedString) ) {
				alt67=1;
			}
			switch (alt67) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:391:24: arrayEntry ( Comma arrayEntry )*
					{
					pushFollow(FOLLOW_arrayEntry_in_arrayDeclaration3167);
					arrayEntry249=arrayEntry();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_arrayEntry.add(arrayEntry249.getTree());
					// com/github/gumtreediff/gen/antlr3/php/Php.g:391:35: ( Comma arrayEntry )*
					loop66:
					while (true) {
						int alt66=2;
						int LA66_0 = input.LA(1);
						if ( (LA66_0==Comma) ) {
							alt66=1;
						}

						switch (alt66) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:391:36: Comma arrayEntry
							{
							Comma250=(Token)match(input,Comma,FOLLOW_Comma_in_arrayDeclaration3170); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(Comma250);

							pushFollow(FOLLOW_arrayEntry_in_arrayDeclaration3172);
							arrayEntry251=arrayEntry();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_arrayEntry.add(arrayEntry251.getTree());
							}
							break;

						default :
							break loop66;
						}
					}

					}
					break;

			}

			CloseBrace252=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_arrayDeclaration3178); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CloseBrace.add(CloseBrace252);

			// AST REWRITE
			// elements: arrayEntry, Array
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 391:68: -> ^( Array ( arrayEntry )* )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:391:71: ^( Array ( arrayEntry )* )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot(stream_Array.nextNode(), root_1);
				// com/github/gumtreediff/gen/antlr3/php/Php.g:391:79: ( arrayEntry )*
				while ( stream_arrayEntry.hasNext() ) {
					adaptor.addChild(root_1, stream_arrayEntry.nextTree());
				}
				stream_arrayEntry.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 48, arrayDeclaration_StartIndex); }

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


	public static class arrayEntry_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "arrayEntry"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:394:1: arrayEntry : ( keyValuePair | expression ) ;
	public final PhpParser.arrayEntry_return arrayEntry() throws RecognitionException {
		PhpParser.arrayEntry_return retval = new PhpParser.arrayEntry_return();
		retval.start = input.LT(1);
		int arrayEntry_StartIndex = input.index();

		CommonTree root_0 = null;

		ParserRuleReturnScope keyValuePair253 =null;
		ParserRuleReturnScope expression254 =null;


		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 49) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:395:5: ( ( keyValuePair | expression ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:395:7: ( keyValuePair | expression )
			{
			root_0 = (CommonTree)adaptor.nil();


			// com/github/gumtreediff/gen/antlr3/php/Php.g:395:7: ( keyValuePair | expression )
			int alt68=2;
			alt68 = dfa68.predict(input);
			switch (alt68) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:395:8: keyValuePair
					{
					pushFollow(FOLLOW_keyValuePair_in_arrayEntry3205);
					keyValuePair253=keyValuePair();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, keyValuePair253.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:395:23: expression
					{
					pushFollow(FOLLOW_expression_in_arrayEntry3209);
					expression254=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression254.getTree());

					}
					break;

			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 49, arrayEntry_StartIndex); }

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


	public static class keyValuePair_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "keyValuePair"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:398:1: keyValuePair : ( expression ArrayAssign expression ) -> ^( ArrayAssign ( expression )+ ) ;
	public final PhpParser.keyValuePair_return keyValuePair() throws RecognitionException {
		PhpParser.keyValuePair_return retval = new PhpParser.keyValuePair_return();
		retval.start = input.LT(1);
		int keyValuePair_StartIndex = input.index();

		CommonTree root_0 = null;

		Token ArrayAssign256=null;
		ParserRuleReturnScope expression255 =null;
		ParserRuleReturnScope expression257 =null;

		CommonTree ArrayAssign256_tree=null;
		RewriteRuleTokenStream stream_ArrayAssign=new RewriteRuleTokenStream(adaptor,"token ArrayAssign");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 50) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:399:5: ( ( expression ArrayAssign expression ) -> ^( ArrayAssign ( expression )+ ) )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:399:7: ( expression ArrayAssign expression )
			{
			// com/github/gumtreediff/gen/antlr3/php/Php.g:399:7: ( expression ArrayAssign expression )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:399:8: expression ArrayAssign expression
			{
			pushFollow(FOLLOW_expression_in_keyValuePair3228);
			expression255=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression255.getTree());
			ArrayAssign256=(Token)match(input,ArrayAssign,FOLLOW_ArrayAssign_in_keyValuePair3230); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ArrayAssign.add(ArrayAssign256);

			pushFollow(FOLLOW_expression_in_keyValuePair3232);
			expression257=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression257.getTree());
			}

			// AST REWRITE
			// elements: expression, ArrayAssign
			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 399:43: -> ^( ArrayAssign ( expression )+ )
			{
				// com/github/gumtreediff/gen/antlr3/php/Php.g:399:46: ^( ArrayAssign ( expression )+ )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot(stream_ArrayAssign.nextNode(), root_1);
				if ( !(stream_expression.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_expression.hasNext() ) {
					adaptor.addChild(root_1, stream_expression.nextTree());
				}
				stream_expression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 50, keyValuePair_StartIndex); }

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


	public static class atom_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "atom"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:402:1: atom : ( SingleQuotedString | DoubleQuotedString | HereDoc | Integer | Real | Boolean | arrayDeclaration );
	public final PhpParser.atom_return atom() throws RecognitionException {
		PhpParser.atom_return retval = new PhpParser.atom_return();
		retval.start = input.LT(1);
		int atom_StartIndex = input.index();

		CommonTree root_0 = null;

		Token SingleQuotedString258=null;
		Token DoubleQuotedString259=null;
		Token HereDoc260=null;
		Token Integer261=null;
		Token Real262=null;
		Token Boolean263=null;
		ParserRuleReturnScope arrayDeclaration264 =null;

		CommonTree SingleQuotedString258_tree=null;
		CommonTree DoubleQuotedString259_tree=null;
		CommonTree HereDoc260_tree=null;
		CommonTree Integer261_tree=null;
		CommonTree Real262_tree=null;
		CommonTree Boolean263_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 51) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:402:5: ( SingleQuotedString | DoubleQuotedString | HereDoc | Integer | Real | Boolean | arrayDeclaration )
			int alt69=7;
			switch ( input.LA(1) ) {
			case SingleQuotedString:
				{
				alt69=1;
				}
				break;
			case DoubleQuotedString:
				{
				alt69=2;
				}
				break;
			case HereDoc:
				{
				alt69=3;
				}
				break;
			case Integer:
				{
				alt69=4;
				}
				break;
			case Real:
				{
				alt69=5;
				}
				break;
			case Boolean:
				{
				alt69=6;
				}
				break;
			case Array:
				{
				alt69=7;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 69, 0, input);
				throw nvae;
			}
			switch (alt69) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:7: SingleQuotedString
					{
					root_0 = (CommonTree)adaptor.nil();


					SingleQuotedString258=(Token)match(input,SingleQuotedString,FOLLOW_SingleQuotedString_in_atom3254); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					SingleQuotedString258_tree = (CommonTree)adaptor.create(SingleQuotedString258);
					adaptor.addChild(root_0, SingleQuotedString258_tree);
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:28: DoubleQuotedString
					{
					root_0 = (CommonTree)adaptor.nil();


					DoubleQuotedString259=(Token)match(input,DoubleQuotedString,FOLLOW_DoubleQuotedString_in_atom3258); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					DoubleQuotedString259_tree = (CommonTree)adaptor.create(DoubleQuotedString259);
					adaptor.addChild(root_0, DoubleQuotedString259_tree);
					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:49: HereDoc
					{
					root_0 = (CommonTree)adaptor.nil();


					HereDoc260=(Token)match(input,HereDoc,FOLLOW_HereDoc_in_atom3262); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					HereDoc260_tree = (CommonTree)adaptor.create(HereDoc260);
					adaptor.addChild(root_0, HereDoc260_tree);
					}

					}
					break;
				case 4 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:59: Integer
					{
					root_0 = (CommonTree)adaptor.nil();


					Integer261=(Token)match(input,Integer,FOLLOW_Integer_in_atom3266); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Integer261_tree = (CommonTree)adaptor.create(Integer261);
					adaptor.addChild(root_0, Integer261_tree);
					}

					}
					break;
				case 5 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:69: Real
					{
					root_0 = (CommonTree)adaptor.nil();


					Real262=(Token)match(input,Real,FOLLOW_Real_in_atom3270); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Real262_tree = (CommonTree)adaptor.create(Real262);
					adaptor.addChild(root_0, Real262_tree);
					}

					}
					break;
				case 6 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:76: Boolean
					{
					root_0 = (CommonTree)adaptor.nil();


					Boolean263=(Token)match(input,Boolean,FOLLOW_Boolean_in_atom3274); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Boolean263_tree = (CommonTree)adaptor.create(Boolean263);
					adaptor.addChild(root_0, Boolean263_tree);
					}

					}
					break;
				case 7 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:402:86: arrayDeclaration
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_arrayDeclaration_in_atom3278);
					arrayDeclaration264=arrayDeclaration();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, arrayDeclaration264.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 51, atom_StartIndex); }

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


	public static class reference_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "reference"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:406:1: reference : ( Ampersand ^ nameOrFunctionCall | nameOrFunctionCall );
	public final PhpParser.reference_return reference() throws RecognitionException {
		PhpParser.reference_return retval = new PhpParser.reference_return();
		retval.start = input.LT(1);
		int reference_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Ampersand265=null;
		ParserRuleReturnScope nameOrFunctionCall266 =null;
		ParserRuleReturnScope nameOrFunctionCall267 =null;

		CommonTree Ampersand265_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 52) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:407:5: ( Ampersand ^ nameOrFunctionCall | nameOrFunctionCall )
			int alt70=2;
			int LA70_0 = input.LA(1);
			if ( (LA70_0==Ampersand) ) {
				alt70=1;
			}
			else if ( (LA70_0==Dollar||LA70_0==UnquotedString) ) {
				alt70=2;
			}

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

			switch (alt70) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:407:7: Ampersand ^ nameOrFunctionCall
					{
					root_0 = (CommonTree)adaptor.nil();


					Ampersand265=(Token)match(input,Ampersand,FOLLOW_Ampersand_in_reference3296); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Ampersand265_tree = (CommonTree)adaptor.create(Ampersand265);
					root_0 = (CommonTree)adaptor.becomeRoot(Ampersand265_tree, root_0);
					}

					pushFollow(FOLLOW_nameOrFunctionCall_in_reference3299);
					nameOrFunctionCall266=nameOrFunctionCall();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, nameOrFunctionCall266.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:408:7: nameOrFunctionCall
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_nameOrFunctionCall_in_reference3307);
					nameOrFunctionCall267=nameOrFunctionCall();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, nameOrFunctionCall267.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 52, reference_StartIndex); }

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


	public static class nameOrFunctionCall_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "nameOrFunctionCall"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:411:1: nameOrFunctionCall : ( name OpenBrace ( expression ( Comma expression )* )? CloseBrace -> ^( Apply name ( expression )* ) | name );
	public final PhpParser.nameOrFunctionCall_return nameOrFunctionCall() throws RecognitionException {
		PhpParser.nameOrFunctionCall_return retval = new PhpParser.nameOrFunctionCall_return();
		retval.start = input.LT(1);
		int nameOrFunctionCall_StartIndex = input.index();

		CommonTree root_0 = null;

		Token OpenBrace269=null;
		Token Comma271=null;
		Token CloseBrace273=null;
		ParserRuleReturnScope name268 =null;
		ParserRuleReturnScope expression270 =null;
		ParserRuleReturnScope expression272 =null;
		ParserRuleReturnScope name274 =null;

		CommonTree OpenBrace269_tree=null;
		CommonTree Comma271_tree=null;
		CommonTree CloseBrace273_tree=null;
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_OpenBrace=new RewriteRuleTokenStream(adaptor,"token OpenBrace");
		RewriteRuleTokenStream stream_CloseBrace=new RewriteRuleTokenStream(adaptor,"token CloseBrace");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"rule name");

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 53) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:412:5: ( name OpenBrace ( expression ( Comma expression )* )? CloseBrace -> ^( Apply name ( expression )* ) | name )
			int alt73=2;
			int LA73_0 = input.LA(1);
			if ( (LA73_0==UnquotedString) ) {
				switch ( input.LA(2) ) {
				case ClassMember:
					{
					int LA73_3 = input.LA(3);
					if ( (synpred110_Php()) ) {
						alt73=1;
					}
					else if ( (true) ) {
						alt73=2;
					}

					}
					break;
				case OpenSquareBrace:
					{
					int LA73_4 = input.LA(3);
					if ( (synpred110_Php()) ) {
						alt73=1;
					}
					else if ( (true) ) {
						alt73=2;
					}

					}
					break;
				case InstanceMember:
					{
					int LA73_5 = input.LA(3);
					if ( (synpred110_Php()) ) {
						alt73=1;
					}
					else if ( (true) ) {
						alt73=2;
					}

					}
					break;
				case OpenBrace:
					{
					alt73=1;
					}
					break;
				case EOF:
				case Ampersand:
				case And:
				case ArrayAssign:
				case Asterisk:
				case BodyString:
				case CloseBrace:
				case CloseSquareBrace:
				case Colon:
				case Comma:
				case ComparisionOperator:
				case Dot:
				case EqualityOperator:
				case Forwardslash:
				case Instanceof:
				case LogicalAnd:
				case LogicalOr:
				case Minus:
				case Or:
				case Percent:
				case Pipe:
				case Plus:
				case QuestionMark:
				case SemiColon:
				case ShiftOperator:
				case Xor:
				case 112:
					{
					alt73=2;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 73, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
			}
			else if ( (LA73_0==Dollar) ) {
				int LA73_2 = input.LA(2);
				if ( (LA73_2==Dollar) ) {
					int LA73_30 = input.LA(3);
					if ( (synpred110_Php()) ) {
						alt73=1;
					}
					else if ( (true) ) {
						alt73=2;
					}

				}
				else if ( (LA73_2==UnquotedString) ) {
					int LA73_31 = input.LA(3);
					if ( (synpred110_Php()) ) {
						alt73=1;
					}
					else if ( (true) ) {
						alt73=2;
					}

				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 73, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

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

			switch (alt73) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:412:7: name OpenBrace ( expression ( Comma expression )* )? CloseBrace
					{
					pushFollow(FOLLOW_name_in_nameOrFunctionCall3324);
					name268=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_name.add(name268.getTree());
					OpenBrace269=(Token)match(input,OpenBrace,FOLLOW_OpenBrace_in_nameOrFunctionCall3326); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OpenBrace.add(OpenBrace269);

					// com/github/gumtreediff/gen/antlr3/php/Php.g:412:22: ( expression ( Comma expression )* )?
					int alt72=2;
					int LA72_0 = input.LA(1);
					if ( (LA72_0==Ampersand||LA72_0==Array||LA72_0==Bang||LA72_0==Boolean||LA72_0==Clone||LA72_0==Dollar||LA72_0==DoubleQuotedString||LA72_0==HereDoc||LA72_0==IncrementOperator||LA72_0==Integer||LA72_0==Minus||LA72_0==New||LA72_0==OpenBrace||LA72_0==Real||LA72_0==SingleQuotedString||LA72_0==SuppressWarnings||LA72_0==Tilde||LA72_0==UnquotedString) ) {
						alt72=1;
					}
					switch (alt72) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:412:23: expression ( Comma expression )*
							{
							pushFollow(FOLLOW_expression_in_nameOrFunctionCall3329);
							expression270=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression270.getTree());
							// com/github/gumtreediff/gen/antlr3/php/Php.g:412:34: ( Comma expression )*
							loop71:
							while (true) {
								int alt71=2;
								int LA71_0 = input.LA(1);
								if ( (LA71_0==Comma) ) {
									alt71=1;
								}

								switch (alt71) {
								case 1 :
									// com/github/gumtreediff/gen/antlr3/php/Php.g:412:35: Comma expression
									{
									Comma271=(Token)match(input,Comma,FOLLOW_Comma_in_nameOrFunctionCall3332); if (state.failed) return retval; 
									if ( state.backtracking==0 ) stream_Comma.add(Comma271);

									pushFollow(FOLLOW_expression_in_nameOrFunctionCall3334);
									expression272=expression();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_expression.add(expression272.getTree());
									}
									break;

								default :
									break loop71;
								}
							}

							}
							break;

					}

					CloseBrace273=(Token)match(input,CloseBrace,FOLLOW_CloseBrace_in_nameOrFunctionCall3340); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CloseBrace.add(CloseBrace273);

					// AST REWRITE
					// elements: name, expression
					// 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.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 412:67: -> ^( Apply name ( expression )* )
					{
						// com/github/gumtreediff/gen/antlr3/php/Php.g:412:70: ^( Apply name ( expression )* )
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(Apply, "Apply"), root_1);
						adaptor.addChild(root_1, stream_name.nextTree());
						// com/github/gumtreediff/gen/antlr3/php/Php.g:412:83: ( expression )*
						while ( stream_expression.hasNext() ) {
							adaptor.addChild(root_1, stream_expression.nextTree());
						}
						stream_expression.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:413:7: name
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_name_in_nameOrFunctionCall3359);
					name274=name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, name274.getTree());

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 53, nameOrFunctionCall_StartIndex); }

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


	public static class name_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "name"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:416:1: name : ( staticMemberAccess ( OpenSquareBrace ^ CloseSquareBrace )? | memberAccess ( OpenSquareBrace ^ CloseSquareBrace )? | variable ( OpenSquareBrace ^ CloseSquareBrace )? );
	public final PhpParser.name_return name() throws RecognitionException {
		PhpParser.name_return retval = new PhpParser.name_return();
		retval.start = input.LT(1);
		int name_StartIndex = input.index();

		CommonTree root_0 = null;

		Token OpenSquareBrace276=null;
		Token CloseSquareBrace277=null;
		Token OpenSquareBrace279=null;
		Token CloseSquareBrace280=null;
		Token OpenSquareBrace282=null;
		Token CloseSquareBrace283=null;
		ParserRuleReturnScope staticMemberAccess275 =null;
		ParserRuleReturnScope memberAccess278 =null;
		ParserRuleReturnScope variable281 =null;

		CommonTree OpenSquareBrace276_tree=null;
		CommonTree CloseSquareBrace277_tree=null;
		CommonTree OpenSquareBrace279_tree=null;
		CommonTree CloseSquareBrace280_tree=null;
		CommonTree OpenSquareBrace282_tree=null;
		CommonTree CloseSquareBrace283_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:416:5: ( staticMemberAccess ( OpenSquareBrace ^ CloseSquareBrace )? | memberAccess ( OpenSquareBrace ^ CloseSquareBrace )? | variable ( OpenSquareBrace ^ CloseSquareBrace )? )
			int alt77=3;
			int LA77_0 = input.LA(1);
			if ( (LA77_0==UnquotedString) ) {
				int LA77_1 = input.LA(2);
				if ( (LA77_1==ClassMember) ) {
					alt77=1;
				}
				else if ( (synpred114_Php()) ) {
					alt77=2;
				}
				else if ( (true) ) {
					alt77=3;
				}

			}
			else if ( (LA77_0==Dollar) ) {
				int LA77_2 = input.LA(2);
				if ( (LA77_2==Dollar) ) {
					int LA77_34 = input.LA(3);
					if ( (synpred114_Php()) ) {
						alt77=2;
					}
					else if ( (true) ) {
						alt77=3;
					}

				}
				else if ( (LA77_2==UnquotedString) ) {
					int LA77_35 = input.LA(3);
					if ( (synpred114_Php()) ) {
						alt77=2;
					}
					else if ( (true) ) {
						alt77=3;
					}

				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 77, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

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

			switch (alt77) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:416:7: staticMemberAccess ( OpenSquareBrace ^ CloseSquareBrace )?
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_staticMemberAccess_in_name3371);
					staticMemberAccess275=staticMemberAccess();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, staticMemberAccess275.getTree());

					// com/github/gumtreediff/gen/antlr3/php/Php.g:416:26: ( OpenSquareBrace ^ CloseSquareBrace )?
					int alt74=2;
					int LA74_0 = input.LA(1);
					if ( (LA74_0==OpenSquareBrace) ) {
						alt74=1;
					}
					switch (alt74) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:416:27: OpenSquareBrace ^ CloseSquareBrace
							{
							OpenSquareBrace276=(Token)match(input,OpenSquareBrace,FOLLOW_OpenSquareBrace_in_name3374); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							OpenSquareBrace276_tree = (CommonTree)adaptor.create(OpenSquareBrace276);
							root_0 = (CommonTree)adaptor.becomeRoot(OpenSquareBrace276_tree, root_0);
							}

							CloseSquareBrace277=(Token)match(input,CloseSquareBrace,FOLLOW_CloseSquareBrace_in_name3377); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							CloseSquareBrace277_tree = (CommonTree)adaptor.create(CloseSquareBrace277);
							adaptor.addChild(root_0, CloseSquareBrace277_tree);
							}

							}
							break;

					}

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:417:7: memberAccess ( OpenSquareBrace ^ CloseSquareBrace )?
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_memberAccess_in_name3387);
					memberAccess278=memberAccess();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, memberAccess278.getTree());

					// com/github/gumtreediff/gen/antlr3/php/Php.g:417:20: ( OpenSquareBrace ^ CloseSquareBrace )?
					int alt75=2;
					int LA75_0 = input.LA(1);
					if ( (LA75_0==OpenSquareBrace) ) {
						alt75=1;
					}
					switch (alt75) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:417:21: OpenSquareBrace ^ CloseSquareBrace
							{
							OpenSquareBrace279=(Token)match(input,OpenSquareBrace,FOLLOW_OpenSquareBrace_in_name3390); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							OpenSquareBrace279_tree = (CommonTree)adaptor.create(OpenSquareBrace279);
							root_0 = (CommonTree)adaptor.becomeRoot(OpenSquareBrace279_tree, root_0);
							}

							CloseSquareBrace280=(Token)match(input,CloseSquareBrace,FOLLOW_CloseSquareBrace_in_name3393); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							CloseSquareBrace280_tree = (CommonTree)adaptor.create(CloseSquareBrace280);
							adaptor.addChild(root_0, CloseSquareBrace280_tree);
							}

							}
							break;

					}

					}
					break;
				case 3 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:418:7: variable ( OpenSquareBrace ^ CloseSquareBrace )?
					{
					root_0 = (CommonTree)adaptor.nil();


					pushFollow(FOLLOW_variable_in_name3403);
					variable281=variable();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, variable281.getTree());

					// com/github/gumtreediff/gen/antlr3/php/Php.g:418:16: ( OpenSquareBrace ^ CloseSquareBrace )?
					int alt76=2;
					int LA76_0 = input.LA(1);
					if ( (LA76_0==OpenSquareBrace) ) {
						alt76=1;
					}
					switch (alt76) {
						case 1 :
							// com/github/gumtreediff/gen/antlr3/php/Php.g:418:17: OpenSquareBrace ^ CloseSquareBrace
							{
							OpenSquareBrace282=(Token)match(input,OpenSquareBrace,FOLLOW_OpenSquareBrace_in_name3406); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							OpenSquareBrace282_tree = (CommonTree)adaptor.create(OpenSquareBrace282);
							root_0 = (CommonTree)adaptor.becomeRoot(OpenSquareBrace282_tree, root_0);
							}

							CloseSquareBrace283=(Token)match(input,CloseSquareBrace,FOLLOW_CloseSquareBrace_in_name3409); if (state.failed) return retval;
							if ( state.backtracking==0 ) {
							CloseSquareBrace283_tree = (CommonTree)adaptor.create(CloseSquareBrace283);
							adaptor.addChild(root_0, CloseSquareBrace283_tree);
							}

							}
							break;

					}

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 54, name_StartIndex); }

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


	public static class staticMemberAccess_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "staticMemberAccess"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:421:1: staticMemberAccess : UnquotedString '::' ^ variable ;
	public final PhpParser.staticMemberAccess_return staticMemberAccess() throws RecognitionException {
		PhpParser.staticMemberAccess_return retval = new PhpParser.staticMemberAccess_return();
		retval.start = input.LT(1);
		int staticMemberAccess_StartIndex = input.index();

		CommonTree root_0 = null;

		Token UnquotedString284=null;
		Token string_literal285=null;
		ParserRuleReturnScope variable286 =null;

		CommonTree UnquotedString284_tree=null;
		CommonTree string_literal285_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 55) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:422:5: ( UnquotedString '::' ^ variable )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:422:7: UnquotedString '::' ^ variable
			{
			root_0 = (CommonTree)adaptor.nil();


			UnquotedString284=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_staticMemberAccess3432); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			UnquotedString284_tree = (CommonTree)adaptor.create(UnquotedString284);
			adaptor.addChild(root_0, UnquotedString284_tree);
			}

			string_literal285=(Token)match(input,ClassMember,FOLLOW_ClassMember_in_staticMemberAccess3434); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			string_literal285_tree = (CommonTree)adaptor.create(string_literal285);
			root_0 = (CommonTree)adaptor.becomeRoot(string_literal285_tree, root_0);
			}

			pushFollow(FOLLOW_variable_in_staticMemberAccess3437);
			variable286=variable();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, variable286.getTree());

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 55, staticMemberAccess_StartIndex); }

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


	public static class memberAccess_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "memberAccess"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:425:1: memberAccess : variable ( OpenSquareBrace ^ expression CloseSquareBrace !| '->' ^ UnquotedString )* ;
	public final PhpParser.memberAccess_return memberAccess() throws RecognitionException {
		PhpParser.memberAccess_return retval = new PhpParser.memberAccess_return();
		retval.start = input.LT(1);
		int memberAccess_StartIndex = input.index();

		CommonTree root_0 = null;

		Token OpenSquareBrace288=null;
		Token CloseSquareBrace290=null;
		Token string_literal291=null;
		Token UnquotedString292=null;
		ParserRuleReturnScope variable287 =null;
		ParserRuleReturnScope expression289 =null;

		CommonTree OpenSquareBrace288_tree=null;
		CommonTree CloseSquareBrace290_tree=null;
		CommonTree string_literal291_tree=null;
		CommonTree UnquotedString292_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:426:5: ( variable ( OpenSquareBrace ^ expression CloseSquareBrace !| '->' ^ UnquotedString )* )
			// com/github/gumtreediff/gen/antlr3/php/Php.g:426:7: variable ( OpenSquareBrace ^ expression CloseSquareBrace !| '->' ^ UnquotedString )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_variable_in_memberAccess3454);
			variable287=variable();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, variable287.getTree());

			// com/github/gumtreediff/gen/antlr3/php/Php.g:427:9: ( OpenSquareBrace ^ expression CloseSquareBrace !| '->' ^ UnquotedString )*
			loop78:
			while (true) {
				int alt78=3;
				int LA78_0 = input.LA(1);
				if ( (LA78_0==OpenSquareBrace) ) {
					int LA78_1 = input.LA(2);
					if ( (LA78_1==Ampersand||LA78_1==Array||LA78_1==Bang||LA78_1==Boolean||LA78_1==Clone||LA78_1==Dollar||LA78_1==DoubleQuotedString||LA78_1==HereDoc||LA78_1==IncrementOperator||LA78_1==Integer||LA78_1==Minus||LA78_1==New||LA78_1==OpenBrace||LA78_1==Real||LA78_1==SingleQuotedString||LA78_1==SuppressWarnings||LA78_1==Tilde||LA78_1==UnquotedString) ) {
						alt78=1;
					}

				}
				else if ( (LA78_0==InstanceMember) ) {
					alt78=2;
				}

				switch (alt78) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:427:11: OpenSquareBrace ^ expression CloseSquareBrace !
					{
					OpenSquareBrace288=(Token)match(input,OpenSquareBrace,FOLLOW_OpenSquareBrace_in_memberAccess3467); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					OpenSquareBrace288_tree = (CommonTree)adaptor.create(OpenSquareBrace288);
					root_0 = (CommonTree)adaptor.becomeRoot(OpenSquareBrace288_tree, root_0);
					}

					pushFollow(FOLLOW_expression_in_memberAccess3470);
					expression289=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression289.getTree());

					CloseSquareBrace290=(Token)match(input,CloseSquareBrace,FOLLOW_CloseSquareBrace_in_memberAccess3472); if (state.failed) return retval;
					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:428:11: '->' ^ UnquotedString
					{
					string_literal291=(Token)match(input,InstanceMember,FOLLOW_InstanceMember_in_memberAccess3485); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal291_tree = (CommonTree)adaptor.create(string_literal291);
					root_0 = (CommonTree)adaptor.becomeRoot(string_literal291_tree, root_0);
					}

					UnquotedString292=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_memberAccess3488); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					UnquotedString292_tree = (CommonTree)adaptor.create(UnquotedString292);
					adaptor.addChild(root_0, UnquotedString292_tree);
					}

					}
					break;

				default :
					break loop78;
				}
			}

			}

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 56, memberAccess_StartIndex); }

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


	public static class variable_return extends ParserRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "variable"
	// com/github/gumtreediff/gen/antlr3/php/Php.g:431:1: variable : ( Dollar ^ variable | UnquotedString );
	public final PhpParser.variable_return variable() throws RecognitionException {
		PhpParser.variable_return retval = new PhpParser.variable_return();
		retval.start = input.LT(1);
		int variable_StartIndex = input.index();

		CommonTree root_0 = null;

		Token Dollar293=null;
		Token UnquotedString295=null;
		ParserRuleReturnScope variable294 =null;

		CommonTree Dollar293_tree=null;
		CommonTree UnquotedString295_tree=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 57) ) { return retval; }

			// com/github/gumtreediff/gen/antlr3/php/Php.g:432:5: ( Dollar ^ variable | UnquotedString )
			int alt79=2;
			int LA79_0 = input.LA(1);
			if ( (LA79_0==Dollar) ) {
				alt79=1;
			}
			else if ( (LA79_0==UnquotedString) ) {
				alt79=2;
			}

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

			switch (alt79) {
				case 1 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:432:7: Dollar ^ variable
					{
					root_0 = (CommonTree)adaptor.nil();


					Dollar293=(Token)match(input,Dollar,FOLLOW_Dollar_in_variable3511); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Dollar293_tree = (CommonTree)adaptor.create(Dollar293);
					root_0 = (CommonTree)adaptor.becomeRoot(Dollar293_tree, root_0);
					}

					pushFollow(FOLLOW_variable_in_variable3514);
					variable294=variable();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, variable294.getTree());

					}
					break;
				case 2 :
					// com/github/gumtreediff/gen/antlr3/php/Php.g:433:7: UnquotedString
					{
					root_0 = (CommonTree)adaptor.nil();


					UnquotedString295=(Token)match(input,UnquotedString,FOLLOW_UnquotedString_in_variable3522); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					UnquotedString295_tree = (CommonTree)adaptor.create(UnquotedString295);
					adaptor.addChild(root_0, UnquotedString295_tree);
					}

					}
					break;

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

			if ( state.backtracking==0 ) {
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException re){
		    throw re; // Stop at first error
		  }

		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 57, variable_StartIndex); }

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

	// $ANTLR start synpred3_Php
	public final void synpred3_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: ( ( simpleStatement )? BodyString )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: ( simpleStatement )? BodyString
		{
		// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: ( simpleStatement )?
		int alt80=2;
		int LA80_0 = input.LA(1);
		if ( (LA80_0==Ampersand||LA80_0==Array||LA80_0==Bang||(LA80_0 >= Boolean && LA80_0 <= Break)||LA80_0==Clone||LA80_0==Continue||LA80_0==Dollar||(LA80_0 >= DoubleQuotedString && LA80_0 <= Echo)||(LA80_0 >= Global && LA80_0 <= HereDoc)||LA80_0==IncrementOperator||LA80_0==Integer||LA80_0==Minus||LA80_0==New||LA80_0==OpenBrace||LA80_0==Real||(LA80_0 >= RequireOperator && LA80_0 <= Return)||LA80_0==SingleQuotedString||(LA80_0 >= Static && LA80_0 <= SuppressWarnings)||(LA80_0 >= Throw && LA80_0 <= Tilde)||LA80_0==UnquotedString) ) {
			alt80=1;
		}
		switch (alt80) {
			case 1 :
				// com/github/gumtreediff/gen/antlr3/php/Php.g:146:7: simpleStatement
				{
				pushFollow(FOLLOW_simpleStatement_in_synpred3_Php912);
				simpleStatement();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		match(input,BodyString,FOLLOW_BodyString_in_synpred3_Php915); if (state.failed) return;

		}

	}
	// $ANTLR end synpred3_Php

	// $ANTLR start synpred4_Php
	public final void synpred4_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:147:7: ( '{' statement '}' )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:147:7: '{' statement '}'
		{
		match(input,OpenCurlyBrace,FOLLOW_OpenCurlyBrace_in_synpred4_Php923); if (state.failed) return;

		pushFollow(FOLLOW_statement_in_synpred4_Php925);
		statement();
		state._fsp--;
		if (state.failed) return;

		match(input,CloseCurlyBrace,FOLLOW_CloseCurlyBrace_in_synpred4_Php927); if (state.failed) return;

		}

	}
	// $ANTLR end synpred4_Php

	// $ANTLR start synpred5_Php
	public final void synpred5_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:148:7: ( bracketedBlock )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:148:7: bracketedBlock
		{
		pushFollow(FOLLOW_bracketedBlock_in_synpred5_Php939);
		bracketedBlock();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred5_Php

	// $ANTLR start synpred23_Php
	public final void synpred23_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:196:7: ( ( fieldModifier )* Function UnquotedString parametersDefinition ( bracketedBlock | ';' ) )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:196:7: ( fieldModifier )* Function UnquotedString parametersDefinition ( bracketedBlock | ';' )
		{
		// com/github/gumtreediff/gen/antlr3/php/Php.g:196:7: ( fieldModifier )*
		loop82:
		while (true) {
			int alt82=2;
			int LA82_0 = input.LA(1);
			if ( ((LA82_0 >= Abstract && LA82_0 <= AccessModifier)||LA82_0==Static) ) {
				alt82=1;
			}

			switch (alt82) {
			case 1 :
				// com/github/gumtreediff/gen/antlr3/php/Php.g:196:7: fieldModifier
				{
				pushFollow(FOLLOW_fieldModifier_in_synpred23_Php1419);
				fieldModifier();
				state._fsp--;
				if (state.failed) return;

				}
				break;

			default :
				break loop82;
			}
		}

		match(input,Function,FOLLOW_Function_in_synpred23_Php1422); if (state.failed) return;

		match(input,UnquotedString,FOLLOW_UnquotedString_in_synpred23_Php1424); if (state.failed) return;

		pushFollow(FOLLOW_parametersDefinition_in_synpred23_Php1426);
		parametersDefinition();
		state._fsp--;
		if (state.failed) return;

		// com/github/gumtreediff/gen/antlr3/php/Php.g:197:9: ( bracketedBlock | ';' )
		int alt83=2;
		int LA83_0 = input.LA(1);
		if ( (LA83_0==OpenCurlyBrace) ) {
			alt83=1;
		}
		else if ( (LA83_0==SemiColon) ) {
			alt83=2;
		}

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

		switch (alt83) {
			case 1 :
				// com/github/gumtreediff/gen/antlr3/php/Php.g:197:10: bracketedBlock
				{
				pushFollow(FOLLOW_bracketedBlock_in_synpred23_Php1438);
				bracketedBlock();
				state._fsp--;
				if (state.failed) return;

				}
				break;
			case 2 :
				// com/github/gumtreediff/gen/antlr3/php/Php.g:197:27: ';'
				{
				match(input,SemiColon,FOLLOW_SemiColon_in_synpred23_Php1442); if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred23_Php

	// $ANTLR start synpred33_Php
	public final void synpred33_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:220:58: ( conditional )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:220:58: conditional
		{
		pushFollow(FOLLOW_conditional_in_synpred33_Php1731);
		conditional();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred33_Php

	// $ANTLR start synpred53_Php
	public final void synpred53_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:245:62: ( conditional )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:245:62: conditional
		{
		pushFollow(FOLLOW_conditional_in_synpred53_Php2077);
		conditional();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred53_Php

	// $ANTLR start synpred67_Php
	public final void synpred67_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:300:23: ( Or weakLogicalXor )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:300:23: Or weakLogicalXor
		{
		match(input,Or,FOLLOW_Or_in_synpred67_Php2493); if (state.failed) return;

		pushFollow(FOLLOW_weakLogicalXor_in_synpred67_Php2496);
		weakLogicalXor();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred67_Php

	// $ANTLR start synpred68_Php
	public final void synpred68_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:304:23: ( Xor weakLogicalAnd )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:304:23: Xor weakLogicalAnd
		{
		match(input,Xor,FOLLOW_Xor_in_synpred68_Php2518); if (state.failed) return;

		pushFollow(FOLLOW_weakLogicalAnd_in_synpred68_Php2521);
		weakLogicalAnd();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred68_Php

	// $ANTLR start synpred69_Php
	public final void synpred69_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:308:19: ( And assignment )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:308:19: And assignment
		{
		match(input,And,FOLLOW_And_in_synpred69_Php2547); if (state.failed) return;

		pushFollow(FOLLOW_assignment_in_synpred69_Php2550);
		assignment();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred69_Php

	// $ANTLR start synpred71_Php
	public final void synpred71_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:312:7: ( name ( ( Equals | AsignmentOperator ) assignment ) )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:312:7: name ( ( Equals | AsignmentOperator ) assignment )
		{
		pushFollow(FOLLOW_name_in_synpred71_Php2569);
		name();
		state._fsp--;
		if (state.failed) return;

		// com/github/gumtreediff/gen/antlr3/php/Php.g:312:12: ( ( Equals | AsignmentOperator ) assignment )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:312:13: ( Equals | AsignmentOperator ) assignment
		{
		if ( input.LA(1)==AsignmentOperator||input.LA(1)==Equals ) {
			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_assignment_in_synpred71_Php2581);
		assignment();
		state._fsp--;
		if (state.failed) return;

		}

		}

	}
	// $ANTLR end synpred71_Php

	// $ANTLR start synpred72_Php
	public final void synpred72_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:317:7: ( logicalOr QuestionMark expression Colon expression )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:317:7: logicalOr QuestionMark expression Colon expression
		{
		pushFollow(FOLLOW_logicalOr_in_synpred72_Php2607);
		logicalOr();
		state._fsp--;
		if (state.failed) return;

		match(input,QuestionMark,FOLLOW_QuestionMark_in_synpred72_Php2609); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred72_Php2611);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Colon,FOLLOW_Colon_in_synpred72_Php2613); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred72_Php2615);
		expression();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred72_Php

	// $ANTLR start synpred94_Php
	public final void synpred94_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:375:7: ( name IncrementOperator )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:375:7: name IncrementOperator
		{
		pushFollow(FOLLOW_name_in_synpred94_Php3061);
		name();
		state._fsp--;
		if (state.failed) return;

		match(input,IncrementOperator,FOLLOW_IncrementOperator_in_synpred94_Php3063); if (state.failed) return;

		}

	}
	// $ANTLR end synpred94_Php

	// $ANTLR start synpred100_Php
	public final void synpred100_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:395:8: ( keyValuePair )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:395:8: keyValuePair
		{
		pushFollow(FOLLOW_keyValuePair_in_synpred100_Php3205);
		keyValuePair();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred100_Php

	// $ANTLR start synpred110_Php
	public final void synpred110_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:412:7: ( name OpenBrace ( expression ( Comma expression )* )? CloseBrace )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:412:7: name OpenBrace ( expression ( Comma expression )* )? CloseBrace
		{
		pushFollow(FOLLOW_name_in_synpred110_Php3324);
		name();
		state._fsp--;
		if (state.failed) return;

		match(input,OpenBrace,FOLLOW_OpenBrace_in_synpred110_Php3326); if (state.failed) return;

		// com/github/gumtreediff/gen/antlr3/php/Php.g:412:22: ( expression ( Comma expression )* )?
		int alt97=2;
		int LA97_0 = input.LA(1);
		if ( (LA97_0==Ampersand||LA97_0==Array||LA97_0==Bang||LA97_0==Boolean||LA97_0==Clone||LA97_0==Dollar||LA97_0==DoubleQuotedString||LA97_0==HereDoc||LA97_0==IncrementOperator||LA97_0==Integer||LA97_0==Minus||LA97_0==New||LA97_0==OpenBrace||LA97_0==Real||LA97_0==SingleQuotedString||LA97_0==SuppressWarnings||LA97_0==Tilde||LA97_0==UnquotedString) ) {
			alt97=1;
		}
		switch (alt97) {
			case 1 :
				// com/github/gumtreediff/gen/antlr3/php/Php.g:412:23: expression ( Comma expression )*
				{
				pushFollow(FOLLOW_expression_in_synpred110_Php3329);
				expression();
				state._fsp--;
				if (state.failed) return;

				// com/github/gumtreediff/gen/antlr3/php/Php.g:412:34: ( Comma expression )*
				loop96:
				while (true) {
					int alt96=2;
					int LA96_0 = input.LA(1);
					if ( (LA96_0==Comma) ) {
						alt96=1;
					}

					switch (alt96) {
					case 1 :
						// com/github/gumtreediff/gen/antlr3/php/Php.g:412:35: Comma expression
						{
						match(input,Comma,FOLLOW_Comma_in_synpred110_Php3332); if (state.failed) return;

						pushFollow(FOLLOW_expression_in_synpred110_Php3334);
						expression();
						state._fsp--;
						if (state.failed) return;

						}
						break;

					default :
						break loop96;
					}
				}

				}
				break;

		}

		match(input,CloseBrace,FOLLOW_CloseBrace_in_synpred110_Php3340); if (state.failed) return;

		}

	}
	// $ANTLR end synpred110_Php

	// $ANTLR start synpred114_Php
	public final void synpred114_Php_fragment() throws RecognitionException {
		// com/github/gumtreediff/gen/antlr3/php/Php.g:417:7: ( memberAccess ( OpenSquareBrace CloseSquareBrace )? )
		// com/github/gumtreediff/gen/antlr3/php/Php.g:417:7: memberAccess ( OpenSquareBrace CloseSquareBrace )?
		{
		pushFollow(FOLLOW_memberAccess_in_synpred114_Php3387);
		memberAccess();
		state._fsp--;
		if (state.failed) return;

		// com/github/gumtreediff/gen/antlr3/php/Php.g:417:20: ( OpenSquareBrace CloseSquareBrace )?
		int alt99=2;
		int LA99_0 = input.LA(1);
		if ( (LA99_0==OpenSquareBrace) ) {
			alt99=1;
		}
		switch (alt99) {
			case 1 :
				// com/github/gumtreediff/gen/antlr3/php/Php.g:417:21: OpenSquareBrace CloseSquareBrace
				{
				match(input,OpenSquareBrace,FOLLOW_OpenSquareBrace_in_synpred114_Php3390); if (state.failed) return;

				match(input,CloseSquareBrace,FOLLOW_CloseSquareBrace_in_synpred114_Php3393); if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred114_Php

	// Delegated rules

	public final boolean synpred3_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred3_Php_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred53_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred53_Php_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 synpred23_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred23_Php_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_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred100_Php_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 synpred4_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred4_Php_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 synpred69_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred69_Php_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_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred71_Php_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred114_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred114_Php_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 synpred67_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred67_Php_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred33_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred33_Php_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 synpred5_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred5_Php_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 synpred68_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred68_Php_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred94_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred94_Php_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_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred110_Php_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_Php() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred72_Php_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 DFA3 dfa3 = new DFA3(this);
	protected DFA24 dfa24 = new DFA24(this);
	protected DFA32 dfa32 = new DFA32(this);
	protected DFA50 dfa50 = new DFA50(this);
	protected DFA68 dfa68 = new DFA68(this);
	static final String DFA3_eotS =
		"\u0146\uffff";
	static final String DFA3_eofS =
		"\u0146\uffff";
	static final String DFA3_minS =
		"\1\4\2\6\2\45\2\17\3\6\1\45\3\6\3\45\6\6\1\121\1\45\1\uffff\1\4\12\uffff"+
		"\45\0\2\uffff\1\0\2\uffff\20\0\2\uffff\44\0\2\uffff\104\0\2\uffff\16\0"+
		"\2\uffff\16\0\2\uffff\16\0\2\uffff\16\0\2\uffff\16\0\2\uffff\47\0\2\uffff";
	static final String DFA3_maxS =
		"\1\155\4\153\2\141\2\153\1\157\7\153\6\157\1\121\1\153\1\uffff\1\155\12"+
		"\uffff\45\0\2\uffff\1\0\2\uffff\20\0\2\uffff\44\0\2\uffff\104\0\2\uffff"+
		"\16\0\2\uffff\16\0\2\uffff\16\0\2\uffff\16\0\2\uffff\16\0\2\uffff\47\0"+
		"\2\uffff";
	static final String DFA3_acceptS =
		"\31\uffff\1\1\1\uffff\1\4\1\uffff\1\5\1\6\54\uffff\1\7\u00f8\uffff\1\3"+
		"\1\2";
	static final String DFA3_specialS =
		"\45\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\1\27\1\30\1\31\1\32\1\33"+
		"\1\34\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\2\uffff\1\45\2\uffff\1\46"+
		"\1\47\1\50\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64"+
		"\1\65\2\uffff\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77\1\100"+
		"\1\101\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114"+
		"\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\124\1\125\1\126\1\127\1\130"+
		"\1\131\2\uffff\1\132\1\133\1\134\1\135\1\136\1\137\1\140\1\141\1\142\1"+
		"\143\1\144\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154\1\155\1\156"+
		"\1\157\1\160\1\161\1\162\1\163\1\164\1\165\1\166\1\167\1\170\1\171\1\172"+
		"\1\173\1\174\1\175\1\176\1\177\1\u0080\1\u0081\1\u0082\1\u0083\1\u0084"+
		"\1\u0085\1\u0086\1\u0087\1\u0088\1\u0089\1\u008a\1\u008b\1\u008c\1\u008d"+
		"\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0093\1\u0094\1\u0095\1\u0096"+
		"\1\u0097\1\u0098\1\u0099\1\u009a\1\u009b\1\u009c\1\u009d\2\uffff\1\u009e"+
		"\1\u009f\1\u00a0\1\u00a1\1\u00a2\1\u00a3\1\u00a4\1\u00a5\1\u00a6\1\u00a7"+
		"\1\u00a8\1\u00a9\1\u00aa\1\u00ab\2\uffff\1\u00ac\1\u00ad\1\u00ae\1\u00af"+
		"\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00b4\1\u00b5\1\u00b6\1\u00b7\1\u00b8"+
		"\1\u00b9\2\uffff\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00be\1\u00bf\1\u00c0"+
		"\1\u00c1\1\u00c2\1\u00c3\1\u00c4\1\u00c5\1\u00c6\1\u00c7\2\uffff\1\u00c8"+
		"\1\u00c9\1\u00ca\1\u00cb\1\u00cc\1\u00cd\1\u00ce\1\u00cf\1\u00d0\1\u00d1"+
		"\1\u00d2\1\u00d3\1\u00d4\1\u00d5\2\uffff\1\u00d6\1\u00d7\1\u00d8\1\u00d9"+
		"\1\u00da\1\u00db\1\u00dc\1\u00dd\1\u00de\1\u00df\1\u00e0\1\u00e1\1\u00e2"+
		"\1\u00e3\2\uffff\1\u00e4\1\u00e5\1\u00e6\1\u00e7\1\u00e8\1\u00e9\1\u00ea"+
		"\1\u00eb\1\u00ec\1\u00ed\1\u00ee\1\u00ef\1\u00f0\1\u00f1\1\u00f2\1\u00f3"+
		"\1\u00f4\1\u00f5\1\u00f6\1\u00f7\1\u00f8\1\u00f9\1\u00fa\1\u00fb\1\u00fc"+
		"\1\u00fd\1\u00fe\1\u00ff\1\u0100\1\u0101\1\u0102\1\u0103\1\u0104\1\u0105"+
		"\1\u0106\1\u0107\1\u0108\1\u0109\1\u010a\2\uffff}>";
	static final String[] DFA3_transitionS = {
			"\1\33\1\uffff\1\30\2\uffff\1\27\3\uffff\1\13\1\uffff\1\31\1\26\1\5\2"+
			"\uffff\1\33\2\uffff\1\20\7\uffff\1\6\4\uffff\1\36\1\12\1\uffff\1\22\1"+
			"\1\13\uffff\1\36\3\uffff\1\36\1\uffff\1\36\1\3\1\23\2\uffff\1\36\2\uffff"+
			"\1\16\2\uffff\1\24\1\35\5\uffff\1\14\2\uffff\1\17\1\uffff\1\15\1\32\12"+
			"\uffff\1\25\1\uffff\1\10\1\7\2\uffff\1\21\1\uffff\1\4\1\14\1\36\1\2\1"+
			"\14\1\uffff\1\11\1\uffff\1\36",
			"\1\64\2\uffff\1\63\3\uffff\1\47\2\uffff\1\62\6\uffff\1\54\15\uffff\1"+
			"\46\1\uffff\1\56\24\uffff\1\57\5\uffff\1\52\2\uffff\1\60\6\uffff\1\50"+
			"\2\uffff\1\53\1\uffff\1\51\13\uffff\1\61\5\uffff\1\55\2\uffff\1\50\2"+
			"\uffff\1\50\1\uffff\1\45",
			"\1\104\2\uffff\1\103\3\uffff\1\67\2\uffff\1\102\6\uffff\1\74\15\uffff"+
			"\1\66\1\uffff\1\76\24\uffff\1\77\5\uffff\1\72\2\uffff\1\100\6\uffff\1"+
			"\70\2\uffff\1\73\1\uffff\1\71\13\uffff\1\101\5\uffff\1\75\2\uffff\1\70"+
			"\2\uffff\1\70\1\uffff\1\65",
			"\1\106\105\uffff\1\105",
			"\1\107\105\uffff\1\110",
			"\1\31\65\uffff\1\111\33\uffff\1\113",
			"\1\31\65\uffff\1\114\33\uffff\1\113",
			"\1\136\2\uffff\1\135\3\uffff\1\121\1\uffff\1\31\1\134\6\uffff\1\126"+
			"\15\uffff\1\120\1\uffff\1\130\24\uffff\1\131\5\uffff\1\124\2\uffff\1"+
			"\132\6\uffff\1\122\2\uffff\1\125\1\uffff\1\123\13\uffff\1\133\3\uffff"+
			"\1\113\1\uffff\1\127\2\uffff\1\122\2\uffff\1\122\1\uffff\1\117",
			"\1\160\2\uffff\1\157\3\uffff\1\143\2\uffff\1\156\6\uffff\1\150\15\uffff"+
			"\1\142\1\uffff\1\152\24\uffff\1\153\5\uffff\1\146\2\uffff\1\154\6\uffff"+
			"\1\144\2\uffff\1\147\1\uffff\1\145\13\uffff\1\155\5\uffff\1\151\2\uffff"+
			"\1\144\2\uffff\1\144\1\uffff\1\141",
			"\1\175\1\u0082\3\uffff\1\164\1\170\2\uffff\1\31\6\uffff\1\161\6\uffff"+
			"\1\173\10\uffff\1\171\6\uffff\1\174\1\164\12\uffff\1\170\10\uffff\1\165"+
			"\1\163\1\167\3\uffff\1\177\1\u0080\2\uffff\1\171\4\uffff\1\166\1\uffff"+
			"\1\162\1\u0084\1\uffff\1\170\1\176\1\171\3\uffff\1\u0081\4\uffff\1\113"+
			"\1\172\14\uffff\1\u0083",
			"\1\u0087\105\uffff\1\u0088",
			"\1\u0098\2\uffff\1\u0097\3\uffff\1\u0089\2\uffff\1\u0096\6\uffff\1\u0090"+
			"\15\uffff\1\u008e\1\uffff\1\u0092\24\uffff\1\u0093\5\uffff\1\u008c\2"+
			"\uffff\1\u0094\6\uffff\1\u008a\2\uffff\1\u008f\1\uffff\1\u008b\13\uffff"+
			"\1\u0095\5\uffff\1\u0091\2\uffff\1\u008a\2\uffff\1\u008a\1\uffff\1\u008d",
			"\1\u00a5\2\uffff\1\u00a4\6\uffff\1\u00a3\6\uffff\1\u009d\15\uffff\1"+
			"\u009b\1\uffff\1\u009f\24\uffff\1\u00a0\5\uffff\1\u0099\2\uffff\1\u00a1"+
			"\11\uffff\1\u009c\15\uffff\1\u00a2\5\uffff\1\u009e\7\uffff\1\u009a",
			"\1\u00b6\2\uffff\1\u00b5\3\uffff\1\u00a9\2\uffff\1\u00b4\6\uffff\1\u00ae"+
			"\15\uffff\1\u00a8\1\uffff\1\u00b0\24\uffff\1\u00b1\5\uffff\1\u00ac\2"+
			"\uffff\1\u00b2\6\uffff\1\u00aa\2\uffff\1\u00ad\1\uffff\1\u00ab\11\uffff"+
			"\1\u00a6\1\uffff\1\u00b3\5\uffff\1\u00af\2\uffff\1\u00aa\2\uffff\1\u00aa"+
			"\1\uffff\1\u00a7",
			"\1\u00b8\105\uffff\1\u00b7",
			"\1\u00ba\105\uffff\1\u00b9",
			"\1\u00bc\105\uffff\1\u00bb",
			"\1\u00c3\1\u00c8\4\uffff\1\u00be\2\uffff\1\31\15\uffff\1\u00c1\10\uffff"+
			"\1\u00bf\6\uffff\1\u00c2\13\uffff\1\u00be\12\uffff\1\u00bd\3\uffff\1"+
			"\u00c5\1\u00c6\2\uffff\1\u00bf\7\uffff\1\u00ca\1\uffff\1\u00be\1\u00c4"+
			"\1\u00bf\3\uffff\1\u00c7\4\uffff\1\113\1\u00c0\14\uffff\1\u00c9",
			"\1\u00d3\1\u00d8\4\uffff\1\u00ce\2\uffff\1\31\15\uffff\1\u00d1\10\uffff"+
			"\1\u00cf\6\uffff\1\u00d2\13\uffff\1\u00ce\12\uffff\1\u00cd\3\uffff\1"+
			"\u00d5\1\u00d6\2\uffff\1\u00cf\7\uffff\1\u00da\1\uffff\1\u00ce\1\u00d4"+
			"\1\u00cf\3\uffff\1\u00d7\4\uffff\1\113\1\u00d0\14\uffff\1\u00d9",
			"\1\u00e3\1\u00e8\4\uffff\1\u00de\2\uffff\1\31\15\uffff\1\u00e1\10\uffff"+
			"\1\u00df\6\uffff\1\u00e2\13\uffff\1\u00de\12\uffff\1\u00dd\3\uffff\1"+
			"\u00e5\1\u00e6\2\uffff\1\u00df\7\uffff\1\u00ea\1\uffff\1\u00de\1\u00e4"+
			"\1\u00df\3\uffff\1\u00e7\4\uffff\1\113\1\u00e0\14\uffff\1\u00e9",
			"\1\u00f3\1\u00f8\4\uffff\1\u00ee\2\uffff\1\31\15\uffff\1\u00f1\10\uffff"+
			"\1\u00ef\6\uffff\1\u00f2\13\uffff\1\u00ee\12\uffff\1\u00ed\3\uffff\1"+
			"\u00f5\1\u00f6\2\uffff\1\u00ef\7\uffff\1\u00fa\1\uffff\1\u00ee\1\u00f4"+
			"\1\u00ef\3\uffff\1\u00f7\4\uffff\1\113\1\u00f0\14\uffff\1\u00f9",
			"\1\u0103\1\u0108\4\uffff\1\u00fe\2\uffff\1\31\15\uffff\1\u0101\10\uffff"+
			"\1\u00ff\6\uffff\1\u0102\13\uffff\1\u00fe\12\uffff\1\u00fd\3\uffff\1"+
			"\u0105\1\u0106\2\uffff\1\u00ff\7\uffff\1\u010a\1\uffff\1\u00fe\1\u0104"+
			"\1\u00ff\3\uffff\1\u0107\4\uffff\1\113\1\u0100\14\uffff\1\u0109",
			"\1\u0113\1\u0118\4\uffff\1\u010e\2\uffff\1\31\15\uffff\1\u0111\10\uffff"+
			"\1\u010f\6\uffff\1\u0112\13\uffff\1\u010e\12\uffff\1\u010d\3\uffff\1"+
			"\u0115\1\u0116\2\uffff\1\u010f\7\uffff\1\u011a\1\uffff\1\u010e\1\u0114"+
			"\1\u010f\3\uffff\1\u0117\4\uffff\1\113\1\u0110\14\uffff\1\u0119",
			"\1\u011d",
			"\1\u011f\105\uffff\1\u011e",
			"",
			"\1\u013a\1\uffff\1\u0137\2\uffff\1\u0136\3\uffff\1\u012a\1\uffff\1\u0138"+
			"\1\u0135\1\u0124\2\uffff\1\u013b\2\uffff\1\u012f\1\uffff\1\u0144\5\uffff"+
			"\1\u0125\4\uffff\1\u0141\1\u0129\1\uffff\1\u0131\1\u0120\13\uffff\1\u013e"+
			"\3\uffff\1\u013f\1\uffff\1\u0143\1\u0122\1\u0132\2\uffff\1\u013d\2\uffff"+
			"\1\u012d\2\uffff\1\u0133\1\u013c\5\uffff\1\u012b\2\uffff\1\u012e\1\uffff"+
			"\1\u012c\1\u0139\12\uffff\1\u0134\1\uffff\1\u0127\1\u0126\2\uffff\1\u0130"+
			"\1\uffff\1\u0123\1\u012b\1\u0142\1\u0121\1\u012b\1\uffff\1\u0128\1\uffff"+
			"\1\u0140",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\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",
			"\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",
			"\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",
			"\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",
			"\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",
			"",
			"",
			"\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",
			"\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[] DFA3_eot = DFA.unpackEncodedString(DFA3_eotS);
	static final short[] DFA3_eof = DFA.unpackEncodedString(DFA3_eofS);
	static final char[] DFA3_min = DFA.unpackEncodedStringToUnsignedChars(DFA3_minS);
	static final char[] DFA3_max = DFA.unpackEncodedStringToUnsignedChars(DFA3_maxS);
	static final short[] DFA3_accept = DFA.unpackEncodedString(DFA3_acceptS);
	static final short[] DFA3_special = DFA.unpackEncodedString(DFA3_specialS);
	static final short[][] DFA3_transition;

	static {
		int numStates = DFA3_transitionS.length;
		DFA3_transition = new short[numStates][];
		for (int i=0; i statement | bracketedBlock | classDefinition | interfaceDefinition | complexStatement | simpleStatement ';' !);";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA3_37 = input.LA(1);
						 
						int index3_37 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_37);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA3_38 = input.LA(1);
						 
						int index3_38 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_38);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA3_39 = input.LA(1);
						 
						int index3_39 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_39);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA3_40 = input.LA(1);
						 
						int index3_40 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_40);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA3_41 = input.LA(1);
						 
						int index3_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_41);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA3_42 = input.LA(1);
						 
						int index3_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_42);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA3_43 = input.LA(1);
						 
						int index3_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_43);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA3_44 = input.LA(1);
						 
						int index3_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_44);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA3_45 = input.LA(1);
						 
						int index3_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_45);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA3_46 = input.LA(1);
						 
						int index3_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_46);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA3_47 = input.LA(1);
						 
						int index3_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_47);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA3_48 = input.LA(1);
						 
						int index3_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_48);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA3_49 = input.LA(1);
						 
						int index3_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_49);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA3_50 = input.LA(1);
						 
						int index3_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_50);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA3_51 = input.LA(1);
						 
						int index3_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_51);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA3_52 = input.LA(1);
						 
						int index3_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_52);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA3_53 = input.LA(1);
						 
						int index3_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_53);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA3_54 = input.LA(1);
						 
						int index3_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_54);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA3_55 = input.LA(1);
						 
						int index3_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_55);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA3_56 = input.LA(1);
						 
						int index3_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_56);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA3_57 = input.LA(1);
						 
						int index3_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_57);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA3_58 = input.LA(1);
						 
						int index3_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_58);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA3_59 = input.LA(1);
						 
						int index3_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_59);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA3_60 = input.LA(1);
						 
						int index3_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_60);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA3_61 = input.LA(1);
						 
						int index3_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_61);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA3_62 = input.LA(1);
						 
						int index3_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_62);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA3_63 = input.LA(1);
						 
						int index3_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_63);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA3_64 = input.LA(1);
						 
						int index3_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_64);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA3_65 = input.LA(1);
						 
						int index3_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_65);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA3_66 = input.LA(1);
						 
						int index3_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_66);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA3_67 = input.LA(1);
						 
						int index3_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_67);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA3_68 = input.LA(1);
						 
						int index3_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_68);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA3_69 = input.LA(1);
						 
						int index3_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_69);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA3_70 = input.LA(1);
						 
						int index3_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_70);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA3_71 = input.LA(1);
						 
						int index3_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_71);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA3_72 = input.LA(1);
						 
						int index3_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_72);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA3_73 = input.LA(1);
						 
						int index3_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_73);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA3_76 = input.LA(1);
						 
						int index3_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_76);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA3_79 = input.LA(1);
						 
						int index3_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_79);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA3_80 = input.LA(1);
						 
						int index3_80 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_80);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA3_81 = input.LA(1);
						 
						int index3_81 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_81);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA3_82 = input.LA(1);
						 
						int index3_82 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_82);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA3_83 = input.LA(1);
						 
						int index3_83 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_83);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA3_84 = input.LA(1);
						 
						int index3_84 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_84);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA3_85 = input.LA(1);
						 
						int index3_85 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_85);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA3_86 = input.LA(1);
						 
						int index3_86 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_86);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA3_87 = input.LA(1);
						 
						int index3_87 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_87);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA3_88 = input.LA(1);
						 
						int index3_88 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_88);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA3_89 = input.LA(1);
						 
						int index3_89 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_89);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA3_90 = input.LA(1);
						 
						int index3_90 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_90);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA3_91 = input.LA(1);
						 
						int index3_91 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_91);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA3_92 = input.LA(1);
						 
						int index3_92 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_92);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA3_93 = input.LA(1);
						 
						int index3_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_93);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA3_94 = input.LA(1);
						 
						int index3_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_94);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA3_97 = input.LA(1);
						 
						int index3_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_97);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA3_98 = input.LA(1);
						 
						int index3_98 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_98);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA3_99 = input.LA(1);
						 
						int index3_99 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_99);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA3_100 = input.LA(1);
						 
						int index3_100 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_100);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA3_101 = input.LA(1);
						 
						int index3_101 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_101);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA3_102 = input.LA(1);
						 
						int index3_102 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_102);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA3_103 = input.LA(1);
						 
						int index3_103 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_103);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA3_104 = input.LA(1);
						 
						int index3_104 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_104);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA3_105 = input.LA(1);
						 
						int index3_105 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_105);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA3_106 = input.LA(1);
						 
						int index3_106 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_106);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA3_107 = input.LA(1);
						 
						int index3_107 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_107);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA3_108 = input.LA(1);
						 
						int index3_108 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_108);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA3_109 = input.LA(1);
						 
						int index3_109 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_109);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA3_110 = input.LA(1);
						 
						int index3_110 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_110);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA3_111 = input.LA(1);
						 
						int index3_111 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_111);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA3_112 = input.LA(1);
						 
						int index3_112 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_112);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA3_113 = input.LA(1);
						 
						int index3_113 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_113);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA3_114 = input.LA(1);
						 
						int index3_114 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_114);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA3_115 = input.LA(1);
						 
						int index3_115 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_115);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA3_116 = input.LA(1);
						 
						int index3_116 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_116);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA3_117 = input.LA(1);
						 
						int index3_117 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_117);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA3_118 = input.LA(1);
						 
						int index3_118 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_118);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA3_119 = input.LA(1);
						 
						int index3_119 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_119);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA3_120 = input.LA(1);
						 
						int index3_120 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_120);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA3_121 = input.LA(1);
						 
						int index3_121 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_121);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA3_122 = input.LA(1);
						 
						int index3_122 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_122);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA3_123 = input.LA(1);
						 
						int index3_123 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_123);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA3_124 = input.LA(1);
						 
						int index3_124 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_124);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA3_125 = input.LA(1);
						 
						int index3_125 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_125);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA3_126 = input.LA(1);
						 
						int index3_126 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_126);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA3_127 = input.LA(1);
						 
						int index3_127 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_127);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA3_128 = input.LA(1);
						 
						int index3_128 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_128);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA3_129 = input.LA(1);
						 
						int index3_129 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_129);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA3_130 = input.LA(1);
						 
						int index3_130 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_130);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA3_131 = input.LA(1);
						 
						int index3_131 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_131);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA3_132 = input.LA(1);
						 
						int index3_132 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_132);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA3_135 = input.LA(1);
						 
						int index3_135 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_135);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA3_136 = input.LA(1);
						 
						int index3_136 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_136);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA3_137 = input.LA(1);
						 
						int index3_137 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_137);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA3_138 = input.LA(1);
						 
						int index3_138 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_138);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA3_139 = input.LA(1);
						 
						int index3_139 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_139);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA3_140 = input.LA(1);
						 
						int index3_140 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_140);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA3_141 = input.LA(1);
						 
						int index3_141 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_141);
						if ( s>=0 ) return s;
						break;

					case 97 : 
						int LA3_142 = input.LA(1);
						 
						int index3_142 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_142);
						if ( s>=0 ) return s;
						break;

					case 98 : 
						int LA3_143 = input.LA(1);
						 
						int index3_143 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_143);
						if ( s>=0 ) return s;
						break;

					case 99 : 
						int LA3_144 = input.LA(1);
						 
						int index3_144 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_144);
						if ( s>=0 ) return s;
						break;

					case 100 : 
						int LA3_145 = input.LA(1);
						 
						int index3_145 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_145);
						if ( s>=0 ) return s;
						break;

					case 101 : 
						int LA3_146 = input.LA(1);
						 
						int index3_146 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_146);
						if ( s>=0 ) return s;
						break;

					case 102 : 
						int LA3_147 = input.LA(1);
						 
						int index3_147 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_147);
						if ( s>=0 ) return s;
						break;

					case 103 : 
						int LA3_148 = input.LA(1);
						 
						int index3_148 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_148);
						if ( s>=0 ) return s;
						break;

					case 104 : 
						int LA3_149 = input.LA(1);
						 
						int index3_149 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_149);
						if ( s>=0 ) return s;
						break;

					case 105 : 
						int LA3_150 = input.LA(1);
						 
						int index3_150 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_150);
						if ( s>=0 ) return s;
						break;

					case 106 : 
						int LA3_151 = input.LA(1);
						 
						int index3_151 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_151);
						if ( s>=0 ) return s;
						break;

					case 107 : 
						int LA3_152 = input.LA(1);
						 
						int index3_152 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_152);
						if ( s>=0 ) return s;
						break;

					case 108 : 
						int LA3_153 = input.LA(1);
						 
						int index3_153 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_153);
						if ( s>=0 ) return s;
						break;

					case 109 : 
						int LA3_154 = input.LA(1);
						 
						int index3_154 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_154);
						if ( s>=0 ) return s;
						break;

					case 110 : 
						int LA3_155 = input.LA(1);
						 
						int index3_155 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_155);
						if ( s>=0 ) return s;
						break;

					case 111 : 
						int LA3_156 = input.LA(1);
						 
						int index3_156 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_156);
						if ( s>=0 ) return s;
						break;

					case 112 : 
						int LA3_157 = input.LA(1);
						 
						int index3_157 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_157);
						if ( s>=0 ) return s;
						break;

					case 113 : 
						int LA3_158 = input.LA(1);
						 
						int index3_158 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_158);
						if ( s>=0 ) return s;
						break;

					case 114 : 
						int LA3_159 = input.LA(1);
						 
						int index3_159 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_159);
						if ( s>=0 ) return s;
						break;

					case 115 : 
						int LA3_160 = input.LA(1);
						 
						int index3_160 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_160);
						if ( s>=0 ) return s;
						break;

					case 116 : 
						int LA3_161 = input.LA(1);
						 
						int index3_161 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_161);
						if ( s>=0 ) return s;
						break;

					case 117 : 
						int LA3_162 = input.LA(1);
						 
						int index3_162 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_162);
						if ( s>=0 ) return s;
						break;

					case 118 : 
						int LA3_163 = input.LA(1);
						 
						int index3_163 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_163);
						if ( s>=0 ) return s;
						break;

					case 119 : 
						int LA3_164 = input.LA(1);
						 
						int index3_164 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_164);
						if ( s>=0 ) return s;
						break;

					case 120 : 
						int LA3_165 = input.LA(1);
						 
						int index3_165 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_165);
						if ( s>=0 ) return s;
						break;

					case 121 : 
						int LA3_166 = input.LA(1);
						 
						int index3_166 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_166);
						if ( s>=0 ) return s;
						break;

					case 122 : 
						int LA3_167 = input.LA(1);
						 
						int index3_167 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_167);
						if ( s>=0 ) return s;
						break;

					case 123 : 
						int LA3_168 = input.LA(1);
						 
						int index3_168 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_168);
						if ( s>=0 ) return s;
						break;

					case 124 : 
						int LA3_169 = input.LA(1);
						 
						int index3_169 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_169);
						if ( s>=0 ) return s;
						break;

					case 125 : 
						int LA3_170 = input.LA(1);
						 
						int index3_170 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_170);
						if ( s>=0 ) return s;
						break;

					case 126 : 
						int LA3_171 = input.LA(1);
						 
						int index3_171 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_171);
						if ( s>=0 ) return s;
						break;

					case 127 : 
						int LA3_172 = input.LA(1);
						 
						int index3_172 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_172);
						if ( s>=0 ) return s;
						break;

					case 128 : 
						int LA3_173 = input.LA(1);
						 
						int index3_173 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_173);
						if ( s>=0 ) return s;
						break;

					case 129 : 
						int LA3_174 = input.LA(1);
						 
						int index3_174 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_174);
						if ( s>=0 ) return s;
						break;

					case 130 : 
						int LA3_175 = input.LA(1);
						 
						int index3_175 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_175);
						if ( s>=0 ) return s;
						break;

					case 131 : 
						int LA3_176 = input.LA(1);
						 
						int index3_176 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_176);
						if ( s>=0 ) return s;
						break;

					case 132 : 
						int LA3_177 = input.LA(1);
						 
						int index3_177 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_177);
						if ( s>=0 ) return s;
						break;

					case 133 : 
						int LA3_178 = input.LA(1);
						 
						int index3_178 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_178);
						if ( s>=0 ) return s;
						break;

					case 134 : 
						int LA3_179 = input.LA(1);
						 
						int index3_179 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_179);
						if ( s>=0 ) return s;
						break;

					case 135 : 
						int LA3_180 = input.LA(1);
						 
						int index3_180 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_180);
						if ( s>=0 ) return s;
						break;

					case 136 : 
						int LA3_181 = input.LA(1);
						 
						int index3_181 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_181);
						if ( s>=0 ) return s;
						break;

					case 137 : 
						int LA3_182 = input.LA(1);
						 
						int index3_182 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_182);
						if ( s>=0 ) return s;
						break;

					case 138 : 
						int LA3_183 = input.LA(1);
						 
						int index3_183 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_183);
						if ( s>=0 ) return s;
						break;

					case 139 : 
						int LA3_184 = input.LA(1);
						 
						int index3_184 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_184);
						if ( s>=0 ) return s;
						break;

					case 140 : 
						int LA3_185 = input.LA(1);
						 
						int index3_185 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_185);
						if ( s>=0 ) return s;
						break;

					case 141 : 
						int LA3_186 = input.LA(1);
						 
						int index3_186 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_186);
						if ( s>=0 ) return s;
						break;

					case 142 : 
						int LA3_187 = input.LA(1);
						 
						int index3_187 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_187);
						if ( s>=0 ) return s;
						break;

					case 143 : 
						int LA3_188 = input.LA(1);
						 
						int index3_188 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_188);
						if ( s>=0 ) return s;
						break;

					case 144 : 
						int LA3_189 = input.LA(1);
						 
						int index3_189 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_189);
						if ( s>=0 ) return s;
						break;

					case 145 : 
						int LA3_190 = input.LA(1);
						 
						int index3_190 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_190);
						if ( s>=0 ) return s;
						break;

					case 146 : 
						int LA3_191 = input.LA(1);
						 
						int index3_191 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_191);
						if ( s>=0 ) return s;
						break;

					case 147 : 
						int LA3_192 = input.LA(1);
						 
						int index3_192 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_192);
						if ( s>=0 ) return s;
						break;

					case 148 : 
						int LA3_193 = input.LA(1);
						 
						int index3_193 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_193);
						if ( s>=0 ) return s;
						break;

					case 149 : 
						int LA3_194 = input.LA(1);
						 
						int index3_194 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_194);
						if ( s>=0 ) return s;
						break;

					case 150 : 
						int LA3_195 = input.LA(1);
						 
						int index3_195 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_195);
						if ( s>=0 ) return s;
						break;

					case 151 : 
						int LA3_196 = input.LA(1);
						 
						int index3_196 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_196);
						if ( s>=0 ) return s;
						break;

					case 152 : 
						int LA3_197 = input.LA(1);
						 
						int index3_197 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_197);
						if ( s>=0 ) return s;
						break;

					case 153 : 
						int LA3_198 = input.LA(1);
						 
						int index3_198 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_198);
						if ( s>=0 ) return s;
						break;

					case 154 : 
						int LA3_199 = input.LA(1);
						 
						int index3_199 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_199);
						if ( s>=0 ) return s;
						break;

					case 155 : 
						int LA3_200 = input.LA(1);
						 
						int index3_200 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_200);
						if ( s>=0 ) return s;
						break;

					case 156 : 
						int LA3_201 = input.LA(1);
						 
						int index3_201 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_201);
						if ( s>=0 ) return s;
						break;

					case 157 : 
						int LA3_202 = input.LA(1);
						 
						int index3_202 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_202);
						if ( s>=0 ) return s;
						break;

					case 158 : 
						int LA3_205 = input.LA(1);
						 
						int index3_205 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_205);
						if ( s>=0 ) return s;
						break;

					case 159 : 
						int LA3_206 = input.LA(1);
						 
						int index3_206 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_206);
						if ( s>=0 ) return s;
						break;

					case 160 : 
						int LA3_207 = input.LA(1);
						 
						int index3_207 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_207);
						if ( s>=0 ) return s;
						break;

					case 161 : 
						int LA3_208 = input.LA(1);
						 
						int index3_208 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_208);
						if ( s>=0 ) return s;
						break;

					case 162 : 
						int LA3_209 = input.LA(1);
						 
						int index3_209 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_209);
						if ( s>=0 ) return s;
						break;

					case 163 : 
						int LA3_210 = input.LA(1);
						 
						int index3_210 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_210);
						if ( s>=0 ) return s;
						break;

					case 164 : 
						int LA3_211 = input.LA(1);
						 
						int index3_211 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_211);
						if ( s>=0 ) return s;
						break;

					case 165 : 
						int LA3_212 = input.LA(1);
						 
						int index3_212 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_212);
						if ( s>=0 ) return s;
						break;

					case 166 : 
						int LA3_213 = input.LA(1);
						 
						int index3_213 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_213);
						if ( s>=0 ) return s;
						break;

					case 167 : 
						int LA3_214 = input.LA(1);
						 
						int index3_214 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_214);
						if ( s>=0 ) return s;
						break;

					case 168 : 
						int LA3_215 = input.LA(1);
						 
						int index3_215 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_215);
						if ( s>=0 ) return s;
						break;

					case 169 : 
						int LA3_216 = input.LA(1);
						 
						int index3_216 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_216);
						if ( s>=0 ) return s;
						break;

					case 170 : 
						int LA3_217 = input.LA(1);
						 
						int index3_217 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_217);
						if ( s>=0 ) return s;
						break;

					case 171 : 
						int LA3_218 = input.LA(1);
						 
						int index3_218 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_218);
						if ( s>=0 ) return s;
						break;

					case 172 : 
						int LA3_221 = input.LA(1);
						 
						int index3_221 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_221);
						if ( s>=0 ) return s;
						break;

					case 173 : 
						int LA3_222 = input.LA(1);
						 
						int index3_222 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_222);
						if ( s>=0 ) return s;
						break;

					case 174 : 
						int LA3_223 = input.LA(1);
						 
						int index3_223 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_223);
						if ( s>=0 ) return s;
						break;

					case 175 : 
						int LA3_224 = input.LA(1);
						 
						int index3_224 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_224);
						if ( s>=0 ) return s;
						break;

					case 176 : 
						int LA3_225 = input.LA(1);
						 
						int index3_225 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_225);
						if ( s>=0 ) return s;
						break;

					case 177 : 
						int LA3_226 = input.LA(1);
						 
						int index3_226 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_226);
						if ( s>=0 ) return s;
						break;

					case 178 : 
						int LA3_227 = input.LA(1);
						 
						int index3_227 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_227);
						if ( s>=0 ) return s;
						break;

					case 179 : 
						int LA3_228 = input.LA(1);
						 
						int index3_228 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_228);
						if ( s>=0 ) return s;
						break;

					case 180 : 
						int LA3_229 = input.LA(1);
						 
						int index3_229 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_229);
						if ( s>=0 ) return s;
						break;

					case 181 : 
						int LA3_230 = input.LA(1);
						 
						int index3_230 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_230);
						if ( s>=0 ) return s;
						break;

					case 182 : 
						int LA3_231 = input.LA(1);
						 
						int index3_231 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_231);
						if ( s>=0 ) return s;
						break;

					case 183 : 
						int LA3_232 = input.LA(1);
						 
						int index3_232 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_232);
						if ( s>=0 ) return s;
						break;

					case 184 : 
						int LA3_233 = input.LA(1);
						 
						int index3_233 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_233);
						if ( s>=0 ) return s;
						break;

					case 185 : 
						int LA3_234 = input.LA(1);
						 
						int index3_234 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_234);
						if ( s>=0 ) return s;
						break;

					case 186 : 
						int LA3_237 = input.LA(1);
						 
						int index3_237 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_237);
						if ( s>=0 ) return s;
						break;

					case 187 : 
						int LA3_238 = input.LA(1);
						 
						int index3_238 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_238);
						if ( s>=0 ) return s;
						break;

					case 188 : 
						int LA3_239 = input.LA(1);
						 
						int index3_239 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_239);
						if ( s>=0 ) return s;
						break;

					case 189 : 
						int LA3_240 = input.LA(1);
						 
						int index3_240 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_240);
						if ( s>=0 ) return s;
						break;

					case 190 : 
						int LA3_241 = input.LA(1);
						 
						int index3_241 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_241);
						if ( s>=0 ) return s;
						break;

					case 191 : 
						int LA3_242 = input.LA(1);
						 
						int index3_242 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_242);
						if ( s>=0 ) return s;
						break;

					case 192 : 
						int LA3_243 = input.LA(1);
						 
						int index3_243 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_243);
						if ( s>=0 ) return s;
						break;

					case 193 : 
						int LA3_244 = input.LA(1);
						 
						int index3_244 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_244);
						if ( s>=0 ) return s;
						break;

					case 194 : 
						int LA3_245 = input.LA(1);
						 
						int index3_245 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_245);
						if ( s>=0 ) return s;
						break;

					case 195 : 
						int LA3_246 = input.LA(1);
						 
						int index3_246 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_246);
						if ( s>=0 ) return s;
						break;

					case 196 : 
						int LA3_247 = input.LA(1);
						 
						int index3_247 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_247);
						if ( s>=0 ) return s;
						break;

					case 197 : 
						int LA3_248 = input.LA(1);
						 
						int index3_248 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_248);
						if ( s>=0 ) return s;
						break;

					case 198 : 
						int LA3_249 = input.LA(1);
						 
						int index3_249 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_249);
						if ( s>=0 ) return s;
						break;

					case 199 : 
						int LA3_250 = input.LA(1);
						 
						int index3_250 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_250);
						if ( s>=0 ) return s;
						break;

					case 200 : 
						int LA3_253 = input.LA(1);
						 
						int index3_253 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_253);
						if ( s>=0 ) return s;
						break;

					case 201 : 
						int LA3_254 = input.LA(1);
						 
						int index3_254 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_254);
						if ( s>=0 ) return s;
						break;

					case 202 : 
						int LA3_255 = input.LA(1);
						 
						int index3_255 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_255);
						if ( s>=0 ) return s;
						break;

					case 203 : 
						int LA3_256 = input.LA(1);
						 
						int index3_256 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_256);
						if ( s>=0 ) return s;
						break;

					case 204 : 
						int LA3_257 = input.LA(1);
						 
						int index3_257 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_257);
						if ( s>=0 ) return s;
						break;

					case 205 : 
						int LA3_258 = input.LA(1);
						 
						int index3_258 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_258);
						if ( s>=0 ) return s;
						break;

					case 206 : 
						int LA3_259 = input.LA(1);
						 
						int index3_259 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_259);
						if ( s>=0 ) return s;
						break;

					case 207 : 
						int LA3_260 = input.LA(1);
						 
						int index3_260 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_260);
						if ( s>=0 ) return s;
						break;

					case 208 : 
						int LA3_261 = input.LA(1);
						 
						int index3_261 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_261);
						if ( s>=0 ) return s;
						break;

					case 209 : 
						int LA3_262 = input.LA(1);
						 
						int index3_262 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_262);
						if ( s>=0 ) return s;
						break;

					case 210 : 
						int LA3_263 = input.LA(1);
						 
						int index3_263 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_263);
						if ( s>=0 ) return s;
						break;

					case 211 : 
						int LA3_264 = input.LA(1);
						 
						int index3_264 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_264);
						if ( s>=0 ) return s;
						break;

					case 212 : 
						int LA3_265 = input.LA(1);
						 
						int index3_265 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_265);
						if ( s>=0 ) return s;
						break;

					case 213 : 
						int LA3_266 = input.LA(1);
						 
						int index3_266 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_266);
						if ( s>=0 ) return s;
						break;

					case 214 : 
						int LA3_269 = input.LA(1);
						 
						int index3_269 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_269);
						if ( s>=0 ) return s;
						break;

					case 215 : 
						int LA3_270 = input.LA(1);
						 
						int index3_270 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_270);
						if ( s>=0 ) return s;
						break;

					case 216 : 
						int LA3_271 = input.LA(1);
						 
						int index3_271 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_271);
						if ( s>=0 ) return s;
						break;

					case 217 : 
						int LA3_272 = input.LA(1);
						 
						int index3_272 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_272);
						if ( s>=0 ) return s;
						break;

					case 218 : 
						int LA3_273 = input.LA(1);
						 
						int index3_273 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_273);
						if ( s>=0 ) return s;
						break;

					case 219 : 
						int LA3_274 = input.LA(1);
						 
						int index3_274 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_274);
						if ( s>=0 ) return s;
						break;

					case 220 : 
						int LA3_275 = input.LA(1);
						 
						int index3_275 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_275);
						if ( s>=0 ) return s;
						break;

					case 221 : 
						int LA3_276 = input.LA(1);
						 
						int index3_276 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_276);
						if ( s>=0 ) return s;
						break;

					case 222 : 
						int LA3_277 = input.LA(1);
						 
						int index3_277 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_277);
						if ( s>=0 ) return s;
						break;

					case 223 : 
						int LA3_278 = input.LA(1);
						 
						int index3_278 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_278);
						if ( s>=0 ) return s;
						break;

					case 224 : 
						int LA3_279 = input.LA(1);
						 
						int index3_279 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_279);
						if ( s>=0 ) return s;
						break;

					case 225 : 
						int LA3_280 = input.LA(1);
						 
						int index3_280 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_280);
						if ( s>=0 ) return s;
						break;

					case 226 : 
						int LA3_281 = input.LA(1);
						 
						int index3_281 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_281);
						if ( s>=0 ) return s;
						break;

					case 227 : 
						int LA3_282 = input.LA(1);
						 
						int index3_282 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_282);
						if ( s>=0 ) return s;
						break;

					case 228 : 
						int LA3_285 = input.LA(1);
						 
						int index3_285 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_285);
						if ( s>=0 ) return s;
						break;

					case 229 : 
						int LA3_286 = input.LA(1);
						 
						int index3_286 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_286);
						if ( s>=0 ) return s;
						break;

					case 230 : 
						int LA3_287 = input.LA(1);
						 
						int index3_287 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_Php()) ) {s = 25;}
						else if ( (true) ) {s = 75;}
						 
						input.seek(index3_287);
						if ( s>=0 ) return s;
						break;

					case 231 : 
						int LA3_288 = input.LA(1);
						 
						int index3_288 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_288);
						if ( s>=0 ) return s;
						break;

					case 232 : 
						int LA3_289 = input.LA(1);
						 
						int index3_289 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_289);
						if ( s>=0 ) return s;
						break;

					case 233 : 
						int LA3_290 = input.LA(1);
						 
						int index3_290 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_290);
						if ( s>=0 ) return s;
						break;

					case 234 : 
						int LA3_291 = input.LA(1);
						 
						int index3_291 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_291);
						if ( s>=0 ) return s;
						break;

					case 235 : 
						int LA3_292 = input.LA(1);
						 
						int index3_292 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_292);
						if ( s>=0 ) return s;
						break;

					case 236 : 
						int LA3_293 = input.LA(1);
						 
						int index3_293 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_293);
						if ( s>=0 ) return s;
						break;

					case 237 : 
						int LA3_294 = input.LA(1);
						 
						int index3_294 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_294);
						if ( s>=0 ) return s;
						break;

					case 238 : 
						int LA3_295 = input.LA(1);
						 
						int index3_295 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_295);
						if ( s>=0 ) return s;
						break;

					case 239 : 
						int LA3_296 = input.LA(1);
						 
						int index3_296 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_296);
						if ( s>=0 ) return s;
						break;

					case 240 : 
						int LA3_297 = input.LA(1);
						 
						int index3_297 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_297);
						if ( s>=0 ) return s;
						break;

					case 241 : 
						int LA3_298 = input.LA(1);
						 
						int index3_298 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_298);
						if ( s>=0 ) return s;
						break;

					case 242 : 
						int LA3_299 = input.LA(1);
						 
						int index3_299 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_299);
						if ( s>=0 ) return s;
						break;

					case 243 : 
						int LA3_300 = input.LA(1);
						 
						int index3_300 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_300);
						if ( s>=0 ) return s;
						break;

					case 244 : 
						int LA3_301 = input.LA(1);
						 
						int index3_301 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_301);
						if ( s>=0 ) return s;
						break;

					case 245 : 
						int LA3_302 = input.LA(1);
						 
						int index3_302 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_302);
						if ( s>=0 ) return s;
						break;

					case 246 : 
						int LA3_303 = input.LA(1);
						 
						int index3_303 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_303);
						if ( s>=0 ) return s;
						break;

					case 247 : 
						int LA3_304 = input.LA(1);
						 
						int index3_304 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_304);
						if ( s>=0 ) return s;
						break;

					case 248 : 
						int LA3_305 = input.LA(1);
						 
						int index3_305 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_305);
						if ( s>=0 ) return s;
						break;

					case 249 : 
						int LA3_306 = input.LA(1);
						 
						int index3_306 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_306);
						if ( s>=0 ) return s;
						break;

					case 250 : 
						int LA3_307 = input.LA(1);
						 
						int index3_307 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_307);
						if ( s>=0 ) return s;
						break;

					case 251 : 
						int LA3_308 = input.LA(1);
						 
						int index3_308 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_308);
						if ( s>=0 ) return s;
						break;

					case 252 : 
						int LA3_309 = input.LA(1);
						 
						int index3_309 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_309);
						if ( s>=0 ) return s;
						break;

					case 253 : 
						int LA3_310 = input.LA(1);
						 
						int index3_310 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_310);
						if ( s>=0 ) return s;
						break;

					case 254 : 
						int LA3_311 = input.LA(1);
						 
						int index3_311 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_311);
						if ( s>=0 ) return s;
						break;

					case 255 : 
						int LA3_312 = input.LA(1);
						 
						int index3_312 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_312);
						if ( s>=0 ) return s;
						break;

					case 256 : 
						int LA3_313 = input.LA(1);
						 
						int index3_313 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_313);
						if ( s>=0 ) return s;
						break;

					case 257 : 
						int LA3_314 = input.LA(1);
						 
						int index3_314 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_314);
						if ( s>=0 ) return s;
						break;

					case 258 : 
						int LA3_315 = input.LA(1);
						 
						int index3_315 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_315);
						if ( s>=0 ) return s;
						break;

					case 259 : 
						int LA3_316 = input.LA(1);
						 
						int index3_316 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_316);
						if ( s>=0 ) return s;
						break;

					case 260 : 
						int LA3_317 = input.LA(1);
						 
						int index3_317 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_317);
						if ( s>=0 ) return s;
						break;

					case 261 : 
						int LA3_318 = input.LA(1);
						 
						int index3_318 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_318);
						if ( s>=0 ) return s;
						break;

					case 262 : 
						int LA3_319 = input.LA(1);
						 
						int index3_319 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_319);
						if ( s>=0 ) return s;
						break;

					case 263 : 
						int LA3_320 = input.LA(1);
						 
						int index3_320 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_320);
						if ( s>=0 ) return s;
						break;

					case 264 : 
						int LA3_321 = input.LA(1);
						 
						int index3_321 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_321);
						if ( s>=0 ) return s;
						break;

					case 265 : 
						int LA3_322 = input.LA(1);
						 
						int index3_322 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_322);
						if ( s>=0 ) return s;
						break;

					case 266 : 
						int LA3_323 = input.LA(1);
						 
						int index3_323 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_Php()) ) {s = 325;}
						else if ( (synpred5_Php()) ) {s = 324;}
						 
						input.seek(index3_323);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 3, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA24_eotS =
		"\121\uffff";
	static final String DFA24_eofS =
		"\1\3\120\uffff";
	static final String DFA24_minS =
		"\1\4\2\0\116\uffff";
	static final String DFA24_maxS =
		"\1\155\2\0\116\uffff";
	static final String DFA24_acceptS =
		"\3\uffff\1\2\50\uffff\1\1\44\uffff";
	static final String DFA24_specialS =
		"\1\uffff\1\0\1\1\116\uffff}>";
	static final String[] DFA24_transitionS = {
			"\1\3\1\uffff\1\3\2\uffff\1\3\3\uffff\1\3\1\uffff\4\3\1\uffff\1\3\2\uffff"+
			"\1\3\1\uffff\1\3\5\uffff\1\3\2\uffff\1\3\1\uffff\2\3\1\uffff\2\3\1\2"+
			"\1\1\11\uffff\1\3\3\uffff\1\3\1\uffff\3\3\2\uffff\1\3\2\uffff\1\3\2\uffff"+
			"\2\3\5\uffff\1\3\2\uffff\1\3\1\uffff\2\3\12\uffff\1\3\1\uffff\2\3\2\uffff"+
			"\1\3\1\uffff\5\3\1\uffff\1\3\1\uffff\1\3",
			"\1\uffff",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA24_eot = DFA.unpackEncodedString(DFA24_eotS);
	static final short[] DFA24_eof = DFA.unpackEncodedString(DFA24_eofS);
	static final char[] DFA24_min = DFA.unpackEncodedStringToUnsignedChars(DFA24_minS);
	static final char[] DFA24_max = DFA.unpackEncodedStringToUnsignedChars(DFA24_maxS);
	static final short[] DFA24_accept = DFA.unpackEncodedString(DFA24_acceptS);
	static final short[] DFA24_special = DFA.unpackEncodedString(DFA24_specialS);
	static final short[][] DFA24_transition;

	static {
		int numStates = DFA24_transitionS.length;
		DFA24_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;

					case 1 : 
						int LA24_2 = input.LA(1);
						 
						int index24_2 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred33_Php()) ) {s = 44;}
						else if ( (true) ) {s = 3;}
						 
						input.seek(index24_2);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 24, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA32_eotS =
		"\121\uffff";
	static final String DFA32_eofS =
		"\1\3\120\uffff";
	static final String DFA32_minS =
		"\1\4\2\0\116\uffff";
	static final String DFA32_maxS =
		"\1\155\2\0\116\uffff";
	static final String DFA32_acceptS =
		"\3\uffff\1\2\50\uffff\1\1\44\uffff";
	static final String DFA32_specialS =
		"\1\uffff\1\0\1\1\116\uffff}>";
	static final String[] DFA32_transitionS = {
			"\1\3\1\uffff\1\3\2\uffff\1\3\3\uffff\1\3\1\uffff\4\3\1\uffff\1\3\2\uffff"+
			"\1\3\1\uffff\1\3\5\uffff\1\3\2\uffff\1\3\1\uffff\2\3\1\uffff\2\3\1\2"+
			"\1\1\11\uffff\1\3\3\uffff\1\3\1\uffff\3\3\2\uffff\1\3\2\uffff\1\3\2\uffff"+
			"\2\3\5\uffff\1\3\2\uffff\1\3\1\uffff\2\3\12\uffff\1\3\1\uffff\2\3\2\uffff"+
			"\1\3\1\uffff\5\3\1\uffff\1\3\1\uffff\1\3",
			"\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=0 ) return s;
						break;

					case 1 : 
						int LA32_2 = input.LA(1);
						 
						int index32_2 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred53_Php()) ) {s = 44;}
						else if ( (true) ) {s = 3;}
						 
						input.seek(index32_2);
						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 DFA50_eotS =
		"\u00f0\uffff";
	static final String DFA50_eofS =
		"\5\uffff\1\121\3\uffff\6\121\u00e1\uffff";
	static final String DFA50_minS =
		"\4\6\1\45\1\6\3\45\6\6\1\121\1\45\77\0\15\uffff\20\0\15\uffff\12\0\15"+
		"\uffff\12\0\15\uffff\12\0\15\uffff\12\0\15\uffff\12\0\15\uffff\3\0";
	static final String DFA50_maxS =
		"\5\153\1\160\3\153\6\160\1\121\1\153\77\0\15\uffff\20\0\15\uffff\12\0"+
		"\15\uffff\12\0\15\uffff\12\0\15\uffff\12\0\15\uffff\12\0\15\uffff\3\0";
	static final String DFA50_acceptS =
		"\120\uffff\1\1\1\2\u009e\uffff";
	static final String DFA50_specialS =
		"\21\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\1\27\1\30\1\31\1\32\1\33"+
		"\1\34\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\47\1\50\1\51"+
		"\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+
		"\1\70\1\71\1\72\1\73\1\74\1\75\1\76\15\uffff\1\77\1\100\1\101\1\102\1"+
		"\103\1\104\1\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114\1\115\1\116"+
		"\15\uffff\1\117\1\120\1\121\1\122\1\123\1\124\1\125\1\126\1\127\1\130"+
		"\15\uffff\1\131\1\132\1\133\1\134\1\135\1\136\1\137\1\140\1\141\1\142"+
		"\15\uffff\1\143\1\144\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
		"\15\uffff\1\155\1\156\1\157\1\160\1\161\1\162\1\163\1\164\1\165\1\166"+
		"\15\uffff\1\167\1\170\1\171\1\172\1\173\1\174\1\175\1\176\1\177\1\u0080"+
		"\15\uffff\1\u0081\1\u0082\1\u0083}>";
	static final String[] DFA50_transitionS = {
			"\1\20\2\uffff\1\17\3\uffff\1\1\2\uffff\1\16\6\uffff\1\10\15\uffff\1\6"+
			"\1\uffff\1\12\24\uffff\1\13\5\uffff\1\4\2\uffff\1\14\6\uffff\1\2\2\uffff"+
			"\1\7\1\uffff\1\3\13\uffff\1\15\5\uffff\1\11\2\uffff\1\2\2\uffff\1\2\1"+
			"\uffff\1\5",
			"\1\40\2\uffff\1\37\3\uffff\1\21\2\uffff\1\36\6\uffff\1\30\15\uffff\1"+
			"\26\1\uffff\1\32\24\uffff\1\33\5\uffff\1\24\2\uffff\1\34\6\uffff\1\22"+
			"\2\uffff\1\27\1\uffff\1\23\13\uffff\1\35\5\uffff\1\31\2\uffff\1\22\2"+
			"\uffff\1\22\1\uffff\1\25",
			"\1\55\2\uffff\1\54\6\uffff\1\53\6\uffff\1\45\15\uffff\1\43\1\uffff\1"+
			"\47\24\uffff\1\50\5\uffff\1\41\2\uffff\1\51\11\uffff\1\44\15\uffff\1"+
			"\52\5\uffff\1\46\7\uffff\1\42",
			"\1\76\2\uffff\1\75\3\uffff\1\61\2\uffff\1\74\6\uffff\1\66\15\uffff\1"+
			"\60\1\uffff\1\70\24\uffff\1\71\5\uffff\1\64\2\uffff\1\72\6\uffff\1\62"+
			"\2\uffff\1\65\1\uffff\1\63\11\uffff\1\56\1\uffff\1\73\5\uffff\1\67\2"+
			"\uffff\1\62\2\uffff\1\62\1\uffff\1\57",
			"\1\100\105\uffff\1\77",
			"\1\114\1\121\2\uffff\1\121\1\uffff\1\107\2\uffff\1\121\6\uffff\1\101"+
			"\1\uffff\1\121\1\uffff\3\121\1\112\10\uffff\1\110\6\uffff\1\113\13\uffff"+
			"\1\107\10\uffff\1\104\1\103\1\106\3\uffff\1\116\1\117\2\uffff\1\110\4"+
			"\uffff\1\105\1\uffff\1\102\1\121\1\uffff\1\107\1\115\1\110\3\uffff\1"+
			"\120\4\uffff\1\121\1\111\14\uffff\2\121",
			"\1\135\105\uffff\1\136",
			"\1\140\105\uffff\1\137",
			"\1\142\105\uffff\1\141",
			"\1\151\1\121\2\uffff\1\121\1\uffff\1\144\2\uffff\1\121\10\uffff\1\121"+
			"\1\uffff\3\121\1\147\10\uffff\1\145\6\uffff\1\150\13\uffff\1\144\12\uffff"+
			"\1\143\3\uffff\1\153\1\154\2\uffff\1\145\7\uffff\1\121\1\uffff\1\144"+
			"\1\152\1\145\3\uffff\1\120\4\uffff\1\121\1\146\14\uffff\2\121",
			"\1\u0080\1\121\2\uffff\1\121\1\uffff\1\173\2\uffff\1\121\10\uffff\1"+
			"\121\1\uffff\3\121\1\176\10\uffff\1\174\6\uffff\1\177\13\uffff\1\173"+
			"\12\uffff\1\172\3\uffff\1\u0082\1\u0083\2\uffff\1\174\7\uffff\1\121\1"+
			"\uffff\1\173\1\u0081\1\174\3\uffff\1\120\4\uffff\1\121\1\175\14\uffff"+
			"\2\121",
			"\1\u0097\1\121\2\uffff\1\121\1\uffff\1\u0092\2\uffff\1\121\10\uffff"+
			"\1\121\1\uffff\3\121\1\u0095\10\uffff\1\u0093\6\uffff\1\u0096\13\uffff"+
			"\1\u0092\12\uffff\1\u0091\3\uffff\1\u0099\1\u009a\2\uffff\1\u0093\7\uffff"+
			"\1\121\1\uffff\1\u0092\1\u0098\1\u0093\3\uffff\1\120\4\uffff\1\121\1"+
			"\u0094\14\uffff\2\121",
			"\1\u00ae\1\121\2\uffff\1\121\1\uffff\1\u00a9\2\uffff\1\121\10\uffff"+
			"\1\121\1\uffff\3\121\1\u00ac\10\uffff\1\u00aa\6\uffff\1\u00ad\13\uffff"+
			"\1\u00a9\12\uffff\1\u00a8\3\uffff\1\u00b0\1\u00b1\2\uffff\1\u00aa\7\uffff"+
			"\1\121\1\uffff\1\u00a9\1\u00af\1\u00aa\3\uffff\1\120\4\uffff\1\121\1"+
			"\u00ab\14\uffff\2\121",
			"\1\u00c5\1\121\2\uffff\1\121\1\uffff\1\u00c0\2\uffff\1\121\10\uffff"+
			"\1\121\1\uffff\3\121\1\u00c3\10\uffff\1\u00c1\6\uffff\1\u00c4\13\uffff"+
			"\1\u00c0\12\uffff\1\u00bf\3\uffff\1\u00c7\1\u00c8\2\uffff\1\u00c1\7\uffff"+
			"\1\121\1\uffff\1\u00c0\1\u00c6\1\u00c1\3\uffff\1\120\4\uffff\1\121\1"+
			"\u00c2\14\uffff\2\121",
			"\1\u00dc\1\121\2\uffff\1\121\1\uffff\1\u00d7\2\uffff\1\121\10\uffff"+
			"\1\121\1\uffff\3\121\1\u00da\10\uffff\1\u00d8\6\uffff\1\u00db\13\uffff"+
			"\1\u00d7\12\uffff\1\u00d6\3\uffff\1\u00de\1\u00df\2\uffff\1\u00d8\7\uffff"+
			"\1\121\1\uffff\1\u00d7\1\u00dd\1\u00d8\3\uffff\1\120\4\uffff\1\121\1"+
			"\u00d9\14\uffff\2\121",
			"\1\u00ed",
			"\1\u00ef\105\uffff\1\u00ee",
			"\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",
			"\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",
			"\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",
			"\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[] DFA50_eot = DFA.unpackEncodedString(DFA50_eotS);
	static final short[] DFA50_eof = DFA.unpackEncodedString(DFA50_eofS);
	static final char[] DFA50_min = DFA.unpackEncodedStringToUnsignedChars(DFA50_minS);
	static final char[] DFA50_max = DFA.unpackEncodedStringToUnsignedChars(DFA50_maxS);
	static final short[] DFA50_accept = DFA.unpackEncodedString(DFA50_acceptS);
	static final short[] DFA50_special = DFA.unpackEncodedString(DFA50_specialS);
	static final short[][] DFA50_transition;

	static {
		int numStates = DFA50_transitionS.length;
		DFA50_transition = new short[numStates][];
		for (int i=0; i ^( IfExpression logicalOr ( expression )* ) | logicalOr );";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA50_17 = input.LA(1);
						 
						int index50_17 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_17);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA50_18 = input.LA(1);
						 
						int index50_18 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_18);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA50_19 = input.LA(1);
						 
						int index50_19 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_19);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA50_20 = input.LA(1);
						 
						int index50_20 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_20);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA50_21 = input.LA(1);
						 
						int index50_21 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_21);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA50_22 = input.LA(1);
						 
						int index50_22 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_22);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA50_23 = input.LA(1);
						 
						int index50_23 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_23);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA50_24 = input.LA(1);
						 
						int index50_24 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_24);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA50_25 = input.LA(1);
						 
						int index50_25 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_25);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA50_26 = input.LA(1);
						 
						int index50_26 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_26);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA50_27 = input.LA(1);
						 
						int index50_27 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_27);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA50_28 = input.LA(1);
						 
						int index50_28 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_28);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA50_29 = input.LA(1);
						 
						int index50_29 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_29);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA50_30 = input.LA(1);
						 
						int index50_30 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_30);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA50_31 = input.LA(1);
						 
						int index50_31 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_31);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA50_32 = input.LA(1);
						 
						int index50_32 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_32);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA50_33 = input.LA(1);
						 
						int index50_33 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_33);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA50_34 = input.LA(1);
						 
						int index50_34 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_34);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA50_35 = input.LA(1);
						 
						int index50_35 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_35);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA50_36 = input.LA(1);
						 
						int index50_36 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_36);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA50_37 = input.LA(1);
						 
						int index50_37 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_37);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA50_38 = input.LA(1);
						 
						int index50_38 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_38);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA50_39 = input.LA(1);
						 
						int index50_39 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_39);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA50_40 = input.LA(1);
						 
						int index50_40 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_40);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA50_41 = input.LA(1);
						 
						int index50_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_41);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA50_42 = input.LA(1);
						 
						int index50_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_42);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA50_43 = input.LA(1);
						 
						int index50_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_43);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA50_44 = input.LA(1);
						 
						int index50_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_44);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA50_45 = input.LA(1);
						 
						int index50_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_45);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA50_46 = input.LA(1);
						 
						int index50_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_46);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA50_47 = input.LA(1);
						 
						int index50_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_47);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA50_48 = input.LA(1);
						 
						int index50_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_48);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA50_49 = input.LA(1);
						 
						int index50_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_49);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA50_50 = input.LA(1);
						 
						int index50_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_50);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA50_51 = input.LA(1);
						 
						int index50_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_51);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA50_52 = input.LA(1);
						 
						int index50_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_52);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA50_53 = input.LA(1);
						 
						int index50_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_53);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA50_54 = input.LA(1);
						 
						int index50_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_54);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA50_55 = input.LA(1);
						 
						int index50_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_55);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA50_56 = input.LA(1);
						 
						int index50_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_56);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA50_57 = input.LA(1);
						 
						int index50_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_57);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA50_58 = input.LA(1);
						 
						int index50_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_58);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA50_59 = input.LA(1);
						 
						int index50_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_59);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA50_60 = input.LA(1);
						 
						int index50_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_60);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA50_61 = input.LA(1);
						 
						int index50_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_61);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA50_62 = input.LA(1);
						 
						int index50_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_62);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA50_63 = input.LA(1);
						 
						int index50_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_63);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA50_64 = input.LA(1);
						 
						int index50_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_64);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA50_65 = input.LA(1);
						 
						int index50_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_65);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA50_66 = input.LA(1);
						 
						int index50_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_66);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA50_67 = input.LA(1);
						 
						int index50_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_67);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA50_68 = input.LA(1);
						 
						int index50_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_68);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA50_69 = input.LA(1);
						 
						int index50_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_69);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA50_70 = input.LA(1);
						 
						int index50_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_70);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA50_71 = input.LA(1);
						 
						int index50_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_71);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA50_72 = input.LA(1);
						 
						int index50_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_72);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA50_73 = input.LA(1);
						 
						int index50_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_73);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA50_74 = input.LA(1);
						 
						int index50_74 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_74);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA50_75 = input.LA(1);
						 
						int index50_75 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_75);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA50_76 = input.LA(1);
						 
						int index50_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_76);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA50_77 = input.LA(1);
						 
						int index50_77 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_77);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA50_78 = input.LA(1);
						 
						int index50_78 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_78);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA50_79 = input.LA(1);
						 
						int index50_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_79);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA50_93 = input.LA(1);
						 
						int index50_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_93);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA50_94 = input.LA(1);
						 
						int index50_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_94);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA50_95 = input.LA(1);
						 
						int index50_95 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_95);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA50_96 = input.LA(1);
						 
						int index50_96 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_96);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA50_97 = input.LA(1);
						 
						int index50_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_97);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA50_98 = input.LA(1);
						 
						int index50_98 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_98);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA50_99 = input.LA(1);
						 
						int index50_99 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_99);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA50_100 = input.LA(1);
						 
						int index50_100 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_100);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA50_101 = input.LA(1);
						 
						int index50_101 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_101);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA50_102 = input.LA(1);
						 
						int index50_102 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_102);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA50_103 = input.LA(1);
						 
						int index50_103 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_103);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA50_104 = input.LA(1);
						 
						int index50_104 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_104);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA50_105 = input.LA(1);
						 
						int index50_105 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_105);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA50_106 = input.LA(1);
						 
						int index50_106 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_106);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA50_107 = input.LA(1);
						 
						int index50_107 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_107);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA50_108 = input.LA(1);
						 
						int index50_108 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_108);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA50_122 = input.LA(1);
						 
						int index50_122 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_122);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA50_123 = input.LA(1);
						 
						int index50_123 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_123);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA50_124 = input.LA(1);
						 
						int index50_124 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_124);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA50_125 = input.LA(1);
						 
						int index50_125 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_125);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA50_126 = input.LA(1);
						 
						int index50_126 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_126);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA50_127 = input.LA(1);
						 
						int index50_127 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_127);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA50_128 = input.LA(1);
						 
						int index50_128 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_128);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA50_129 = input.LA(1);
						 
						int index50_129 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_129);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA50_130 = input.LA(1);
						 
						int index50_130 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_130);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA50_131 = input.LA(1);
						 
						int index50_131 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_131);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA50_145 = input.LA(1);
						 
						int index50_145 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_145);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA50_146 = input.LA(1);
						 
						int index50_146 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_146);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA50_147 = input.LA(1);
						 
						int index50_147 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_147);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA50_148 = input.LA(1);
						 
						int index50_148 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_148);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA50_149 = input.LA(1);
						 
						int index50_149 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_149);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA50_150 = input.LA(1);
						 
						int index50_150 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_150);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA50_151 = input.LA(1);
						 
						int index50_151 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_151);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA50_152 = input.LA(1);
						 
						int index50_152 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_152);
						if ( s>=0 ) return s;
						break;

					case 97 : 
						int LA50_153 = input.LA(1);
						 
						int index50_153 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_153);
						if ( s>=0 ) return s;
						break;

					case 98 : 
						int LA50_154 = input.LA(1);
						 
						int index50_154 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_154);
						if ( s>=0 ) return s;
						break;

					case 99 : 
						int LA50_168 = input.LA(1);
						 
						int index50_168 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_168);
						if ( s>=0 ) return s;
						break;

					case 100 : 
						int LA50_169 = input.LA(1);
						 
						int index50_169 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_169);
						if ( s>=0 ) return s;
						break;

					case 101 : 
						int LA50_170 = input.LA(1);
						 
						int index50_170 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_170);
						if ( s>=0 ) return s;
						break;

					case 102 : 
						int LA50_171 = input.LA(1);
						 
						int index50_171 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_171);
						if ( s>=0 ) return s;
						break;

					case 103 : 
						int LA50_172 = input.LA(1);
						 
						int index50_172 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_172);
						if ( s>=0 ) return s;
						break;

					case 104 : 
						int LA50_173 = input.LA(1);
						 
						int index50_173 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_173);
						if ( s>=0 ) return s;
						break;

					case 105 : 
						int LA50_174 = input.LA(1);
						 
						int index50_174 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_174);
						if ( s>=0 ) return s;
						break;

					case 106 : 
						int LA50_175 = input.LA(1);
						 
						int index50_175 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_175);
						if ( s>=0 ) return s;
						break;

					case 107 : 
						int LA50_176 = input.LA(1);
						 
						int index50_176 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_176);
						if ( s>=0 ) return s;
						break;

					case 108 : 
						int LA50_177 = input.LA(1);
						 
						int index50_177 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_177);
						if ( s>=0 ) return s;
						break;

					case 109 : 
						int LA50_191 = input.LA(1);
						 
						int index50_191 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_191);
						if ( s>=0 ) return s;
						break;

					case 110 : 
						int LA50_192 = input.LA(1);
						 
						int index50_192 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_192);
						if ( s>=0 ) return s;
						break;

					case 111 : 
						int LA50_193 = input.LA(1);
						 
						int index50_193 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_193);
						if ( s>=0 ) return s;
						break;

					case 112 : 
						int LA50_194 = input.LA(1);
						 
						int index50_194 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_194);
						if ( s>=0 ) return s;
						break;

					case 113 : 
						int LA50_195 = input.LA(1);
						 
						int index50_195 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_195);
						if ( s>=0 ) return s;
						break;

					case 114 : 
						int LA50_196 = input.LA(1);
						 
						int index50_196 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_196);
						if ( s>=0 ) return s;
						break;

					case 115 : 
						int LA50_197 = input.LA(1);
						 
						int index50_197 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_197);
						if ( s>=0 ) return s;
						break;

					case 116 : 
						int LA50_198 = input.LA(1);
						 
						int index50_198 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_198);
						if ( s>=0 ) return s;
						break;

					case 117 : 
						int LA50_199 = input.LA(1);
						 
						int index50_199 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_199);
						if ( s>=0 ) return s;
						break;

					case 118 : 
						int LA50_200 = input.LA(1);
						 
						int index50_200 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_200);
						if ( s>=0 ) return s;
						break;

					case 119 : 
						int LA50_214 = input.LA(1);
						 
						int index50_214 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_214);
						if ( s>=0 ) return s;
						break;

					case 120 : 
						int LA50_215 = input.LA(1);
						 
						int index50_215 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_215);
						if ( s>=0 ) return s;
						break;

					case 121 : 
						int LA50_216 = input.LA(1);
						 
						int index50_216 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_216);
						if ( s>=0 ) return s;
						break;

					case 122 : 
						int LA50_217 = input.LA(1);
						 
						int index50_217 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_217);
						if ( s>=0 ) return s;
						break;

					case 123 : 
						int LA50_218 = input.LA(1);
						 
						int index50_218 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_218);
						if ( s>=0 ) return s;
						break;

					case 124 : 
						int LA50_219 = input.LA(1);
						 
						int index50_219 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_219);
						if ( s>=0 ) return s;
						break;

					case 125 : 
						int LA50_220 = input.LA(1);
						 
						int index50_220 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_220);
						if ( s>=0 ) return s;
						break;

					case 126 : 
						int LA50_221 = input.LA(1);
						 
						int index50_221 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_221);
						if ( s>=0 ) return s;
						break;

					case 127 : 
						int LA50_222 = input.LA(1);
						 
						int index50_222 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_222);
						if ( s>=0 ) return s;
						break;

					case 128 : 
						int LA50_223 = input.LA(1);
						 
						int index50_223 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_223);
						if ( s>=0 ) return s;
						break;

					case 129 : 
						int LA50_237 = input.LA(1);
						 
						int index50_237 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_237);
						if ( s>=0 ) return s;
						break;

					case 130 : 
						int LA50_238 = input.LA(1);
						 
						int index50_238 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_238);
						if ( s>=0 ) return s;
						break;

					case 131 : 
						int LA50_239 = input.LA(1);
						 
						int index50_239 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred72_Php()) ) {s = 80;}
						else if ( (true) ) {s = 81;}
						 
						input.seek(index50_239);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 50, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA68_eotS =
		"\u00ce\uffff";
	static final String DFA68_eofS =
		"\1\uffff\1\46\7\uffff\6\46\u00bf\uffff";
	static final String DFA68_minS =
		"\2\6\1\45\3\6\3\45\6\6\1\121\1\45\24\0\4\uffff\104\0\4\uffff\16\0\4\uffff"+
		"\16\0\4\uffff\16\0\4\uffff\16\0\4\uffff\16\0\4\uffff\3\0";
	static final String DFA68_maxS =
		"\1\153\1\157\7\153\6\157\1\121\1\153\24\0\4\uffff\104\0\4\uffff\16\0\4"+
		"\uffff\16\0\4\uffff\16\0\4\uffff\16\0\4\uffff\16\0\4\uffff\3\0";
	static final String DFA68_acceptS =
		"\45\uffff\1\1\1\2\u00a7\uffff";
	static final String DFA68_specialS =
		"\21\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\4\uffff\1\24\1\25\1\26\1\27\1\30\1\31\1"+
		"\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\47\1"+
		"\50\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1"+
		"\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103"+
		"\1\104\1\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114\1\115\1\116\1\117"+
		"\1\120\1\121\1\122\1\123\1\124\1\125\1\126\1\127\4\uffff\1\130\1\131\1"+
		"\132\1\133\1\134\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144\1\145"+
		"\4\uffff\1\146\1\147\1\150\1\151\1\152\1\153\1\154\1\155\1\156\1\157\1"+
		"\160\1\161\1\162\1\163\4\uffff\1\164\1\165\1\166\1\167\1\170\1\171\1\172"+
		"\1\173\1\174\1\175\1\176\1\177\1\u0080\1\u0081\4\uffff\1\u0082\1\u0083"+
		"\1\u0084\1\u0085\1\u0086\1\u0087\1\u0088\1\u0089\1\u008a\1\u008b\1\u008c"+
		"\1\u008d\1\u008e\1\u008f\4\uffff\1\u0090\1\u0091\1\u0092\1\u0093\1\u0094"+
		"\1\u0095\1\u0096\1\u0097\1\u0098\1\u0099\1\u009a\1\u009b\1\u009c\1\u009d"+
		"\4\uffff\1\u009e\1\u009f\1\u00a0}>";
	static final String[] DFA68_transitionS = {
			"\1\20\2\uffff\1\17\3\uffff\1\3\2\uffff\1\16\6\uffff\1\10\15\uffff\1\2"+
			"\1\uffff\1\12\24\uffff\1\13\5\uffff\1\6\2\uffff\1\14\6\uffff\1\4\2\uffff"+
			"\1\7\1\uffff\1\5\13\uffff\1\15\5\uffff\1\11\2\uffff\1\4\2\uffff\1\4\1"+
			"\uffff\1\1",
			"\1\35\1\42\2\uffff\1\45\1\24\1\30\11\uffff\1\21\1\uffff\1\46\3\uffff"+
			"\1\46\1\33\10\uffff\1\31\6\uffff\1\34\1\24\12\uffff\1\30\10\uffff\1\25"+
			"\1\23\1\27\3\uffff\1\37\1\40\2\uffff\1\31\4\uffff\1\26\1\uffff\1\22\1"+
			"\44\1\uffff\1\30\1\36\1\31\3\uffff\1\41\5\uffff\1\32\14\uffff\1\43",
			"\1\51\105\uffff\1\52",
			"\1\72\2\uffff\1\71\3\uffff\1\53\2\uffff\1\70\6\uffff\1\62\15\uffff\1"+
			"\60\1\uffff\1\64\24\uffff\1\65\5\uffff\1\56\2\uffff\1\66\6\uffff\1\54"+
			"\2\uffff\1\61\1\uffff\1\55\13\uffff\1\67\5\uffff\1\63\2\uffff\1\54\2"+
			"\uffff\1\54\1\uffff\1\57",
			"\1\107\2\uffff\1\106\6\uffff\1\105\6\uffff\1\77\15\uffff\1\75\1\uffff"+
			"\1\101\24\uffff\1\102\5\uffff\1\73\2\uffff\1\103\11\uffff\1\76\15\uffff"+
			"\1\104\5\uffff\1\100\7\uffff\1\74",
			"\1\130\2\uffff\1\127\3\uffff\1\113\2\uffff\1\126\6\uffff\1\120\15\uffff"+
			"\1\112\1\uffff\1\122\24\uffff\1\123\5\uffff\1\116\2\uffff\1\124\6\uffff"+
			"\1\114\2\uffff\1\117\1\uffff\1\115\11\uffff\1\110\1\uffff\1\125\5\uffff"+
			"\1\121\2\uffff\1\114\2\uffff\1\114\1\uffff\1\111",
			"\1\132\105\uffff\1\131",
			"\1\134\105\uffff\1\133",
			"\1\136\105\uffff\1\135",
			"\1\145\1\152\2\uffff\1\45\1\uffff\1\140\13\uffff\1\46\3\uffff\1\46\1"+
			"\143\10\uffff\1\141\6\uffff\1\144\13\uffff\1\140\12\uffff\1\137\3\uffff"+
			"\1\147\1\150\2\uffff\1\141\7\uffff\1\154\1\uffff\1\140\1\146\1\141\3"+
			"\uffff\1\151\5\uffff\1\142\14\uffff\1\153",
			"\1\167\1\174\2\uffff\1\45\1\uffff\1\162\13\uffff\1\46\3\uffff\1\46\1"+
			"\165\10\uffff\1\163\6\uffff\1\166\13\uffff\1\162\12\uffff\1\161\3\uffff"+
			"\1\171\1\172\2\uffff\1\163\7\uffff\1\176\1\uffff\1\162\1\170\1\163\3"+
			"\uffff\1\173\5\uffff\1\164\14\uffff\1\175",
			"\1\u0089\1\u008e\2\uffff\1\45\1\uffff\1\u0084\13\uffff\1\46\3\uffff"+
			"\1\46\1\u0087\10\uffff\1\u0085\6\uffff\1\u0088\13\uffff\1\u0084\12\uffff"+
			"\1\u0083\3\uffff\1\u008b\1\u008c\2\uffff\1\u0085\7\uffff\1\u0090\1\uffff"+
			"\1\u0084\1\u008a\1\u0085\3\uffff\1\u008d\5\uffff\1\u0086\14\uffff\1\u008f",
			"\1\u009b\1\u00a0\2\uffff\1\45\1\uffff\1\u0096\13\uffff\1\46\3\uffff"+
			"\1\46\1\u0099\10\uffff\1\u0097\6\uffff\1\u009a\13\uffff\1\u0096\12\uffff"+
			"\1\u0095\3\uffff\1\u009d\1\u009e\2\uffff\1\u0097\7\uffff\1\u00a2\1\uffff"+
			"\1\u0096\1\u009c\1\u0097\3\uffff\1\u009f\5\uffff\1\u0098\14\uffff\1\u00a1",
			"\1\u00ad\1\u00b2\2\uffff\1\45\1\uffff\1\u00a8\13\uffff\1\46\3\uffff"+
			"\1\46\1\u00ab\10\uffff\1\u00a9\6\uffff\1\u00ac\13\uffff\1\u00a8\12\uffff"+
			"\1\u00a7\3\uffff\1\u00af\1\u00b0\2\uffff\1\u00a9\7\uffff\1\u00b4\1\uffff"+
			"\1\u00a8\1\u00ae\1\u00a9\3\uffff\1\u00b1\5\uffff\1\u00aa\14\uffff\1\u00b3",
			"\1\u00bf\1\u00c4\2\uffff\1\45\1\uffff\1\u00ba\13\uffff\1\46\3\uffff"+
			"\1\46\1\u00bd\10\uffff\1\u00bb\6\uffff\1\u00be\13\uffff\1\u00ba\12\uffff"+
			"\1\u00b9\3\uffff\1\u00c1\1\u00c2\2\uffff\1\u00bb\7\uffff\1\u00c6\1\uffff"+
			"\1\u00ba\1\u00c0\1\u00bb\3\uffff\1\u00c3\5\uffff\1\u00bc\14\uffff\1\u00c5",
			"\1\u00cb",
			"\1\u00cd\105\uffff\1\u00cc",
			"\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",
			"\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",
			"\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",
			"\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",
			"\1\uffff"
	};

	static final short[] DFA68_eot = DFA.unpackEncodedString(DFA68_eotS);
	static final short[] DFA68_eof = DFA.unpackEncodedString(DFA68_eofS);
	static final char[] DFA68_min = DFA.unpackEncodedStringToUnsignedChars(DFA68_minS);
	static final char[] DFA68_max = DFA.unpackEncodedStringToUnsignedChars(DFA68_maxS);
	static final short[] DFA68_accept = DFA.unpackEncodedString(DFA68_acceptS);
	static final short[] DFA68_special = DFA.unpackEncodedString(DFA68_specialS);
	static final short[][] DFA68_transition;

	static {
		int numStates = DFA68_transitionS.length;
		DFA68_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;

					case 1 : 
						int LA68_18 = input.LA(1);
						 
						int index68_18 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_18);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA68_19 = input.LA(1);
						 
						int index68_19 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_19);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA68_20 = input.LA(1);
						 
						int index68_20 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_20);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA68_21 = input.LA(1);
						 
						int index68_21 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_21);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA68_22 = input.LA(1);
						 
						int index68_22 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_22);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA68_23 = input.LA(1);
						 
						int index68_23 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_23);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA68_24 = input.LA(1);
						 
						int index68_24 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_24);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA68_25 = input.LA(1);
						 
						int index68_25 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_25);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA68_26 = input.LA(1);
						 
						int index68_26 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_26);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA68_27 = input.LA(1);
						 
						int index68_27 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_27);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA68_28 = input.LA(1);
						 
						int index68_28 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_28);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA68_29 = input.LA(1);
						 
						int index68_29 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_29);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA68_30 = input.LA(1);
						 
						int index68_30 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_30);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA68_31 = input.LA(1);
						 
						int index68_31 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_31);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA68_32 = input.LA(1);
						 
						int index68_32 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_32);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA68_33 = input.LA(1);
						 
						int index68_33 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_33);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA68_34 = input.LA(1);
						 
						int index68_34 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_34);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA68_35 = input.LA(1);
						 
						int index68_35 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_35);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA68_36 = input.LA(1);
						 
						int index68_36 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_36);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA68_41 = input.LA(1);
						 
						int index68_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_41);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA68_42 = input.LA(1);
						 
						int index68_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_42);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA68_43 = input.LA(1);
						 
						int index68_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_43);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA68_44 = input.LA(1);
						 
						int index68_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_44);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA68_45 = input.LA(1);
						 
						int index68_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_45);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA68_46 = input.LA(1);
						 
						int index68_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_46);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA68_47 = input.LA(1);
						 
						int index68_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_47);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA68_48 = input.LA(1);
						 
						int index68_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_48);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA68_49 = input.LA(1);
						 
						int index68_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_49);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA68_50 = input.LA(1);
						 
						int index68_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_50);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA68_51 = input.LA(1);
						 
						int index68_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_51);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA68_52 = input.LA(1);
						 
						int index68_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_52);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA68_53 = input.LA(1);
						 
						int index68_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_53);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA68_54 = input.LA(1);
						 
						int index68_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_54);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA68_55 = input.LA(1);
						 
						int index68_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_55);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA68_56 = input.LA(1);
						 
						int index68_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_56);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA68_57 = input.LA(1);
						 
						int index68_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_57);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA68_58 = input.LA(1);
						 
						int index68_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_58);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA68_59 = input.LA(1);
						 
						int index68_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_59);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA68_60 = input.LA(1);
						 
						int index68_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_60);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA68_61 = input.LA(1);
						 
						int index68_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_61);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA68_62 = input.LA(1);
						 
						int index68_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_62);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA68_63 = input.LA(1);
						 
						int index68_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_63);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA68_64 = input.LA(1);
						 
						int index68_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_64);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA68_65 = input.LA(1);
						 
						int index68_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_65);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA68_66 = input.LA(1);
						 
						int index68_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_66);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA68_67 = input.LA(1);
						 
						int index68_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_67);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA68_68 = input.LA(1);
						 
						int index68_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_68);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA68_69 = input.LA(1);
						 
						int index68_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_69);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA68_70 = input.LA(1);
						 
						int index68_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_70);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA68_71 = input.LA(1);
						 
						int index68_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_71);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA68_72 = input.LA(1);
						 
						int index68_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_72);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA68_73 = input.LA(1);
						 
						int index68_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_73);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA68_74 = input.LA(1);
						 
						int index68_74 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_74);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA68_75 = input.LA(1);
						 
						int index68_75 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_75);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA68_76 = input.LA(1);
						 
						int index68_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_76);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA68_77 = input.LA(1);
						 
						int index68_77 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_77);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA68_78 = input.LA(1);
						 
						int index68_78 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_78);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA68_79 = input.LA(1);
						 
						int index68_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_79);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA68_80 = input.LA(1);
						 
						int index68_80 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_80);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA68_81 = input.LA(1);
						 
						int index68_81 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_81);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA68_82 = input.LA(1);
						 
						int index68_82 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_82);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA68_83 = input.LA(1);
						 
						int index68_83 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_83);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA68_84 = input.LA(1);
						 
						int index68_84 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_84);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA68_85 = input.LA(1);
						 
						int index68_85 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_85);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA68_86 = input.LA(1);
						 
						int index68_86 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_86);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA68_87 = input.LA(1);
						 
						int index68_87 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_87);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA68_88 = input.LA(1);
						 
						int index68_88 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_88);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA68_89 = input.LA(1);
						 
						int index68_89 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_89);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA68_90 = input.LA(1);
						 
						int index68_90 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_90);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA68_91 = input.LA(1);
						 
						int index68_91 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_91);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA68_92 = input.LA(1);
						 
						int index68_92 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_92);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA68_93 = input.LA(1);
						 
						int index68_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_93);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA68_94 = input.LA(1);
						 
						int index68_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_94);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA68_95 = input.LA(1);
						 
						int index68_95 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_95);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA68_96 = input.LA(1);
						 
						int index68_96 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_96);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA68_97 = input.LA(1);
						 
						int index68_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_97);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA68_98 = input.LA(1);
						 
						int index68_98 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_98);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA68_99 = input.LA(1);
						 
						int index68_99 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_99);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA68_100 = input.LA(1);
						 
						int index68_100 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_100);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA68_101 = input.LA(1);
						 
						int index68_101 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_101);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA68_102 = input.LA(1);
						 
						int index68_102 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_102);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA68_103 = input.LA(1);
						 
						int index68_103 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_103);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA68_104 = input.LA(1);
						 
						int index68_104 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_104);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA68_105 = input.LA(1);
						 
						int index68_105 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_105);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA68_106 = input.LA(1);
						 
						int index68_106 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_106);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA68_107 = input.LA(1);
						 
						int index68_107 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_107);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA68_108 = input.LA(1);
						 
						int index68_108 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_108);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA68_113 = input.LA(1);
						 
						int index68_113 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_113);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA68_114 = input.LA(1);
						 
						int index68_114 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_114);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA68_115 = input.LA(1);
						 
						int index68_115 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_115);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA68_116 = input.LA(1);
						 
						int index68_116 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_116);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA68_117 = input.LA(1);
						 
						int index68_117 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_117);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA68_118 = input.LA(1);
						 
						int index68_118 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_118);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA68_119 = input.LA(1);
						 
						int index68_119 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_119);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA68_120 = input.LA(1);
						 
						int index68_120 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_120);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA68_121 = input.LA(1);
						 
						int index68_121 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_121);
						if ( s>=0 ) return s;
						break;

					case 97 : 
						int LA68_122 = input.LA(1);
						 
						int index68_122 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_122);
						if ( s>=0 ) return s;
						break;

					case 98 : 
						int LA68_123 = input.LA(1);
						 
						int index68_123 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_123);
						if ( s>=0 ) return s;
						break;

					case 99 : 
						int LA68_124 = input.LA(1);
						 
						int index68_124 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_124);
						if ( s>=0 ) return s;
						break;

					case 100 : 
						int LA68_125 = input.LA(1);
						 
						int index68_125 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_125);
						if ( s>=0 ) return s;
						break;

					case 101 : 
						int LA68_126 = input.LA(1);
						 
						int index68_126 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_126);
						if ( s>=0 ) return s;
						break;

					case 102 : 
						int LA68_131 = input.LA(1);
						 
						int index68_131 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_131);
						if ( s>=0 ) return s;
						break;

					case 103 : 
						int LA68_132 = input.LA(1);
						 
						int index68_132 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_132);
						if ( s>=0 ) return s;
						break;

					case 104 : 
						int LA68_133 = input.LA(1);
						 
						int index68_133 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_133);
						if ( s>=0 ) return s;
						break;

					case 105 : 
						int LA68_134 = input.LA(1);
						 
						int index68_134 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_134);
						if ( s>=0 ) return s;
						break;

					case 106 : 
						int LA68_135 = input.LA(1);
						 
						int index68_135 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_135);
						if ( s>=0 ) return s;
						break;

					case 107 : 
						int LA68_136 = input.LA(1);
						 
						int index68_136 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_136);
						if ( s>=0 ) return s;
						break;

					case 108 : 
						int LA68_137 = input.LA(1);
						 
						int index68_137 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_137);
						if ( s>=0 ) return s;
						break;

					case 109 : 
						int LA68_138 = input.LA(1);
						 
						int index68_138 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_138);
						if ( s>=0 ) return s;
						break;

					case 110 : 
						int LA68_139 = input.LA(1);
						 
						int index68_139 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_139);
						if ( s>=0 ) return s;
						break;

					case 111 : 
						int LA68_140 = input.LA(1);
						 
						int index68_140 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_140);
						if ( s>=0 ) return s;
						break;

					case 112 : 
						int LA68_141 = input.LA(1);
						 
						int index68_141 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_141);
						if ( s>=0 ) return s;
						break;

					case 113 : 
						int LA68_142 = input.LA(1);
						 
						int index68_142 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_142);
						if ( s>=0 ) return s;
						break;

					case 114 : 
						int LA68_143 = input.LA(1);
						 
						int index68_143 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_143);
						if ( s>=0 ) return s;
						break;

					case 115 : 
						int LA68_144 = input.LA(1);
						 
						int index68_144 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_144);
						if ( s>=0 ) return s;
						break;

					case 116 : 
						int LA68_149 = input.LA(1);
						 
						int index68_149 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_149);
						if ( s>=0 ) return s;
						break;

					case 117 : 
						int LA68_150 = input.LA(1);
						 
						int index68_150 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_150);
						if ( s>=0 ) return s;
						break;

					case 118 : 
						int LA68_151 = input.LA(1);
						 
						int index68_151 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_151);
						if ( s>=0 ) return s;
						break;

					case 119 : 
						int LA68_152 = input.LA(1);
						 
						int index68_152 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_152);
						if ( s>=0 ) return s;
						break;

					case 120 : 
						int LA68_153 = input.LA(1);
						 
						int index68_153 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_153);
						if ( s>=0 ) return s;
						break;

					case 121 : 
						int LA68_154 = input.LA(1);
						 
						int index68_154 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_154);
						if ( s>=0 ) return s;
						break;

					case 122 : 
						int LA68_155 = input.LA(1);
						 
						int index68_155 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_155);
						if ( s>=0 ) return s;
						break;

					case 123 : 
						int LA68_156 = input.LA(1);
						 
						int index68_156 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_156);
						if ( s>=0 ) return s;
						break;

					case 124 : 
						int LA68_157 = input.LA(1);
						 
						int index68_157 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_157);
						if ( s>=0 ) return s;
						break;

					case 125 : 
						int LA68_158 = input.LA(1);
						 
						int index68_158 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_158);
						if ( s>=0 ) return s;
						break;

					case 126 : 
						int LA68_159 = input.LA(1);
						 
						int index68_159 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_159);
						if ( s>=0 ) return s;
						break;

					case 127 : 
						int LA68_160 = input.LA(1);
						 
						int index68_160 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_160);
						if ( s>=0 ) return s;
						break;

					case 128 : 
						int LA68_161 = input.LA(1);
						 
						int index68_161 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_161);
						if ( s>=0 ) return s;
						break;

					case 129 : 
						int LA68_162 = input.LA(1);
						 
						int index68_162 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_162);
						if ( s>=0 ) return s;
						break;

					case 130 : 
						int LA68_167 = input.LA(1);
						 
						int index68_167 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_167);
						if ( s>=0 ) return s;
						break;

					case 131 : 
						int LA68_168 = input.LA(1);
						 
						int index68_168 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_168);
						if ( s>=0 ) return s;
						break;

					case 132 : 
						int LA68_169 = input.LA(1);
						 
						int index68_169 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_169);
						if ( s>=0 ) return s;
						break;

					case 133 : 
						int LA68_170 = input.LA(1);
						 
						int index68_170 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_170);
						if ( s>=0 ) return s;
						break;

					case 134 : 
						int LA68_171 = input.LA(1);
						 
						int index68_171 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_171);
						if ( s>=0 ) return s;
						break;

					case 135 : 
						int LA68_172 = input.LA(1);
						 
						int index68_172 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_172);
						if ( s>=0 ) return s;
						break;

					case 136 : 
						int LA68_173 = input.LA(1);
						 
						int index68_173 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_173);
						if ( s>=0 ) return s;
						break;

					case 137 : 
						int LA68_174 = input.LA(1);
						 
						int index68_174 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_174);
						if ( s>=0 ) return s;
						break;

					case 138 : 
						int LA68_175 = input.LA(1);
						 
						int index68_175 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_175);
						if ( s>=0 ) return s;
						break;

					case 139 : 
						int LA68_176 = input.LA(1);
						 
						int index68_176 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_176);
						if ( s>=0 ) return s;
						break;

					case 140 : 
						int LA68_177 = input.LA(1);
						 
						int index68_177 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_177);
						if ( s>=0 ) return s;
						break;

					case 141 : 
						int LA68_178 = input.LA(1);
						 
						int index68_178 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_178);
						if ( s>=0 ) return s;
						break;

					case 142 : 
						int LA68_179 = input.LA(1);
						 
						int index68_179 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_179);
						if ( s>=0 ) return s;
						break;

					case 143 : 
						int LA68_180 = input.LA(1);
						 
						int index68_180 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_180);
						if ( s>=0 ) return s;
						break;

					case 144 : 
						int LA68_185 = input.LA(1);
						 
						int index68_185 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_185);
						if ( s>=0 ) return s;
						break;

					case 145 : 
						int LA68_186 = input.LA(1);
						 
						int index68_186 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_186);
						if ( s>=0 ) return s;
						break;

					case 146 : 
						int LA68_187 = input.LA(1);
						 
						int index68_187 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_187);
						if ( s>=0 ) return s;
						break;

					case 147 : 
						int LA68_188 = input.LA(1);
						 
						int index68_188 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_188);
						if ( s>=0 ) return s;
						break;

					case 148 : 
						int LA68_189 = input.LA(1);
						 
						int index68_189 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_189);
						if ( s>=0 ) return s;
						break;

					case 149 : 
						int LA68_190 = input.LA(1);
						 
						int index68_190 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_190);
						if ( s>=0 ) return s;
						break;

					case 150 : 
						int LA68_191 = input.LA(1);
						 
						int index68_191 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_191);
						if ( s>=0 ) return s;
						break;

					case 151 : 
						int LA68_192 = input.LA(1);
						 
						int index68_192 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_192);
						if ( s>=0 ) return s;
						break;

					case 152 : 
						int LA68_193 = input.LA(1);
						 
						int index68_193 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_193);
						if ( s>=0 ) return s;
						break;

					case 153 : 
						int LA68_194 = input.LA(1);
						 
						int index68_194 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_194);
						if ( s>=0 ) return s;
						break;

					case 154 : 
						int LA68_195 = input.LA(1);
						 
						int index68_195 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_195);
						if ( s>=0 ) return s;
						break;

					case 155 : 
						int LA68_196 = input.LA(1);
						 
						int index68_196 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_196);
						if ( s>=0 ) return s;
						break;

					case 156 : 
						int LA68_197 = input.LA(1);
						 
						int index68_197 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_197);
						if ( s>=0 ) return s;
						break;

					case 157 : 
						int LA68_198 = input.LA(1);
						 
						int index68_198 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_198);
						if ( s>=0 ) return s;
						break;

					case 158 : 
						int LA68_203 = input.LA(1);
						 
						int index68_203 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_203);
						if ( s>=0 ) return s;
						break;

					case 159 : 
						int LA68_204 = input.LA(1);
						 
						int index68_204 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_204);
						if ( s>=0 ) return s;
						break;

					case 160 : 
						int LA68_205 = input.LA(1);
						 
						int index68_205 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred100_Php()) ) {s = 37;}
						else if ( (true) ) {s = 38;}
						 
						input.seek(index68_205);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 68, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	public static final BitSet FOLLOW_statement_in_prog899 = new BitSet(new long[]{0x9D1001B08093A252L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_simpleStatement_in_statement912 = new BitSet(new long[]{0x0000000000008000L});
	public static final BitSet FOLLOW_BodyString_in_statement915 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OpenCurlyBrace_in_statement923 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_statement925 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CloseCurlyBrace_in_statement927 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bracketedBlock_in_statement939 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_classDefinition_in_statement952 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_interfaceDefinition_in_statement960 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_complexStatement_in_statement968 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_simpleStatement_in_statement976 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_statement978 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OpenCurlyBrace_in_bracketedBlock1000 = new BitSet(new long[]{0x9D1001B08293A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_bracketedBlock1004 = new BitSet(new long[]{0x9D1001B08293A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_CloseCurlyBrace_in_bracketedBlock1007 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Interface_in_interfaceDefinition1033 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_interfaceDefinition1037 = new BitSet(new long[]{0x0002000000000000L,0x0000000000040000L});
	public static final BitSet FOLLOW_interfaceExtends_in_interfaceDefinition1039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
	public static final BitSet FOLLOW_OpenCurlyBrace_in_interfaceDefinition1050 = new BitSet(new long[]{0x0400000042000030L,0x0000002000000000L});
	public static final BitSet FOLLOW_interfaceMember_in_interfaceDefinition1060 = new BitSet(new long[]{0x0400000042000030L,0x0000002000000000L});
	public static final BitSet FOLLOW_CloseCurlyBrace_in_interfaceDefinition1071 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Extends_in_interfaceExtends1111 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_interfaceExtends1114 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_Comma_in_interfaceExtends1117 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_interfaceExtends1120 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_Const_in_interfaceMember1138 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_interfaceMember1140 = new BitSet(new long[]{0x0000400000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_Equals_in_interfaceMember1143 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_interfaceMember1145 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_interfaceMember1149 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_fieldModifier_in_interfaceMember1177 = new BitSet(new long[]{0x0400000000000030L,0x0000002000000000L});
	public static final BitSet FOLLOW_Function_in_interfaceMember1180 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_interfaceMember1182 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_parametersDefinition_in_interfaceMember1184 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_interfaceMember1186 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_classModifier_in_classDefinition1230 = new BitSet(new long[]{0x0000000000100000L});
	public static final BitSet FOLLOW_Class_in_classDefinition1242 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classDefinition1246 = new BitSet(new long[]{0x0002000000000000L,0x0000000000040002L});
	public static final BitSet FOLLOW_Extends_in_classDefinition1258 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classDefinition1262 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040002L});
	public static final BitSet FOLLOW_classImplements_in_classDefinition1275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
	public static final BitSet FOLLOW_OpenCurlyBrace_in_classDefinition1286 = new BitSet(new long[]{0x0400002042000030L,0x0000102000000000L});
	public static final BitSet FOLLOW_classMember_in_classDefinition1296 = new BitSet(new long[]{0x0400002042000030L,0x0000102000000000L});
	public static final BitSet FOLLOW_CloseCurlyBrace_in_classDefinition1307 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Implements_in_classImplements1389 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classImplements1393 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_Comma_in_classImplements1396 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classImplements1399 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_fieldModifier_in_classMember1419 = new BitSet(new long[]{0x0400000000000030L,0x0000002000000000L});
	public static final BitSet FOLLOW_Function_in_classMember1422 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classMember1424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_parametersDefinition_in_classMember1426 = new BitSet(new long[]{0x0000000000000000L,0x0000000200040000L});
	public static final BitSet FOLLOW_bracketedBlock_in_classMember1438 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SemiColon_in_classMember1442 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Var_in_classMember1479 = new BitSet(new long[]{0x0000002000000000L});
	public static final BitSet FOLLOW_Dollar_in_classMember1481 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classMember1483 = new BitSet(new long[]{0x0000400000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_Equals_in_classMember1486 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_classMember1488 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_classMember1492 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Const_in_classMember1525 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classMember1527 = new BitSet(new long[]{0x0000400000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_Equals_in_classMember1530 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_classMember1532 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_classMember1536 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_fieldModifier_in_classMember1564 = new BitSet(new long[]{0x0000002000000030L,0x0000002000000000L});
	public static final BitSet FOLLOW_Dollar_in_classMember1568 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_classMember1570 = new BitSet(new long[]{0x0000400000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_Equals_in_classMember1574 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_classMember1576 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_classMember1580 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Dollar_in_fieldDefinition1628 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_fieldDefinition1630 = new BitSet(new long[]{0x0000400000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_Equals_in_fieldDefinition1633 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_fieldDefinition1635 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_fieldDefinition1639 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Abstract_in_classModifier1674 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_complexStatement1717 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_complexStatement1719 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_complexStatement1723 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_complexStatement1725 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_complexStatement1729 = new BitSet(new long[]{0x0000060000000002L});
	public static final BitSet FOLLOW_conditional_in_complexStatement1731 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_For_in_complexStatement1762 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_complexStatement1764 = new BitSet(new long[]{0x100000A000812240L,0x00000A4A20029024L});
	public static final BitSet FOLLOW_forInit_in_complexStatement1766 = new BitSet(new long[]{0x100000A000812240L,0x00000A4A20029024L});
	public static final BitSet FOLLOW_forCondition_in_complexStatement1768 = new BitSet(new long[]{0x100000A001812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_forUpdate_in_complexStatement1770 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_complexStatement1772 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_complexStatement1774 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Foreach_in_complexStatement1796 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_complexStatement1798 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_complexStatement1800 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_112_in_complexStatement1802 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_arrayEntry_in_complexStatement1804 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_complexStatement1806 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_complexStatement1808 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_While_in_complexStatement1828 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_complexStatement1830 = new BitSet(new long[]{0x100000A001812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_complexStatement1834 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_complexStatement1837 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_complexStatement1839 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Do_in_complexStatement1858 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_complexStatement1860 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
	public static final BitSet FOLLOW_While_in_complexStatement1862 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_complexStatement1864 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_complexStatement1868 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_complexStatement1870 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_complexStatement1872 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Switch_in_complexStatement1891 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_complexStatement1893 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_complexStatement1895 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_complexStatement1897 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
	public static final BitSet FOLLOW_OpenCurlyBrace_in_complexStatement1899 = new BitSet(new long[]{0x0000000402040000L});
	public static final BitSet FOLLOW_cases_in_complexStatement1900 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CloseCurlyBrace_in_complexStatement1901 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionDefinition_in_complexStatement1919 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Echo_in_simpleStatement1936 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_commaList_in_simpleStatement1939 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Throw_in_simpleStatement1947 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_simpleStatement1950 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Global_in_simpleStatement1958 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_name_in_simpleStatement1961 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_Comma_in_simpleStatement1964 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_name_in_simpleStatement1967 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_Static_in_simpleStatement1977 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_variable_in_simpleStatement1980 = new BitSet(new long[]{0x0000400000000000L});
	public static final BitSet FOLLOW_Equals_in_simpleStatement1982 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_simpleStatement1985 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Break_in_simpleStatement1993 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
	public static final BitSet FOLLOW_Integer_in_simpleStatement1996 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Continue_in_simpleStatement2005 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
	public static final BitSet FOLLOW_Integer_in_simpleStatement2008 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Return_in_simpleStatement2022 = new BitSet(new long[]{0x100000A000812242L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_simpleStatement2025 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RequireOperator_in_simpleStatement2034 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_simpleStatement2037 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_simpleStatement2045 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ElseIf_in_conditional2063 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_conditional2065 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_conditional2069 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_conditional2071 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_conditional2075 = new BitSet(new long[]{0x0000060000000002L});
	public static final BitSet FOLLOW_conditional_in_conditional2077 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_conditional2101 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_conditional2103 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_commaList_in_forInit2124 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_forInit2127 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_commaList_in_forCondition2153 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_SemiColon_in_forCondition2156 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_commaList_in_forUpdate2186 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_casestatement_in_cases2214 = new BitSet(new long[]{0x0000000400040002L});
	public static final BitSet FOLLOW_defaultcase_in_cases2218 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_casestatement2236 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_casestatement2239 = new BitSet(new long[]{0x0000000008000000L});
	public static final BitSet FOLLOW_Colon_in_casestatement2241 = new BitSet(new long[]{0x9D1001B08093A252L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_casestatement2244 = new BitSet(new long[]{0x9D1001B08093A252L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_Default_in_defaultcase2264 = new BitSet(new long[]{0x0000000008000000L});
	public static final BitSet FOLLOW_Colon_in_defaultcase2267 = new BitSet(new long[]{0x9D1001B08093A252L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_defaultcase2270 = new BitSet(new long[]{0x9D1001B08093A252L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_Function_in_functionDefinition2289 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_functionDefinition2291 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_parametersDefinition_in_functionDefinition2293 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
	public static final BitSet FOLLOW_bracketedBlock_in_functionDefinition2295 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OpenBrace_in_parametersDefinition2333 = new BitSet(new long[]{0x0000002001000040L});
	public static final BitSet FOLLOW_paramDef_in_parametersDefinition2336 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_Comma_in_parametersDefinition2339 = new BitSet(new long[]{0x0000002000000040L});
	public static final BitSet FOLLOW_paramDef_in_parametersDefinition2341 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_CloseBrace_in_parametersDefinition2347 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_paramName_in_paramDef2374 = new BitSet(new long[]{0x0000400000000002L});
	public static final BitSet FOLLOW_Equals_in_paramDef2377 = new BitSet(new long[]{0x1000008000010200L,0x0000000820000020L});
	public static final BitSet FOLLOW_atom_in_paramDef2380 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Dollar_in_paramName2399 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_paramName2402 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Ampersand_in_paramName2410 = new BitSet(new long[]{0x0000002000000000L});
	public static final BitSet FOLLOW_Dollar_in_paramName2412 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_paramName2414 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_commaList2443 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_Comma_in_commaList2446 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_commaList2449 = new BitSet(new long[]{0x0000000010000002L});
	public static final BitSet FOLLOW_weakLogicalOr_in_expression2473 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_weakLogicalXor_in_weakLogicalOr2490 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
	public static final BitSet FOLLOW_Or_in_weakLogicalOr2493 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_weakLogicalXor_in_weakLogicalOr2496 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
	public static final BitSet FOLLOW_weakLogicalAnd_in_weakLogicalXor2515 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
	public static final BitSet FOLLOW_Xor_in_weakLogicalXor2518 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_weakLogicalAnd_in_weakLogicalXor2521 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
	public static final BitSet FOLLOW_assignment_in_weakLogicalAnd2544 = new BitSet(new long[]{0x0000000000000082L});
	public static final BitSet FOLLOW_And_in_weakLogicalAnd2547 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_assignment_in_weakLogicalAnd2550 = new BitSet(new long[]{0x0000000000000082L});
	public static final BitSet FOLLOW_name_in_assignment2569 = new BitSet(new long[]{0x0000400000000800L});
	public static final BitSet FOLLOW_set_in_assignment2572 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_assignment_in_assignment2581 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ternary_in_assignment2590 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_logicalOr_in_ternary2607 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_QuestionMark_in_ternary2609 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_ternary2611 = new BitSet(new long[]{0x0000000008000000L});
	public static final BitSet FOLLOW_Colon_in_ternary2613 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_ternary2615 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_logicalOr_in_ternary2634 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_logicalAnd_in_logicalOr2655 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
	public static final BitSet FOLLOW_LogicalOr_in_logicalOr2658 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_logicalAnd_in_logicalOr2661 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
	public static final BitSet FOLLOW_bitwiseOr_in_logicalAnd2680 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
	public static final BitSet FOLLOW_LogicalAnd_in_logicalAnd2683 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_bitwiseOr_in_logicalAnd2686 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
	public static final BitSet FOLLOW_bitWiseAnd_in_bitwiseOr2709 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
	public static final BitSet FOLLOW_Pipe_in_bitwiseOr2712 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_bitWiseAnd_in_bitwiseOr2715 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
	public static final BitSet FOLLOW_equalityCheck_in_bitWiseAnd2734 = new BitSet(new long[]{0x0000000000000042L});
	public static final BitSet FOLLOW_Ampersand_in_bitWiseAnd2737 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_equalityCheck_in_bitWiseAnd2740 = new BitSet(new long[]{0x0000000000000042L});
	public static final BitSet FOLLOW_comparisionCheck_in_equalityCheck2759 = new BitSet(new long[]{0x0000200000000002L});
	public static final BitSet FOLLOW_EqualityOperator_in_equalityCheck2762 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_comparisionCheck_in_equalityCheck2765 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bitWiseShift_in_comparisionCheck2788 = new BitSet(new long[]{0x0000000020000002L});
	public static final BitSet FOLLOW_ComparisionOperator_in_comparisionCheck2791 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_bitWiseShift_in_comparisionCheck2794 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_addition_in_bitWiseShift2813 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
	public static final BitSet FOLLOW_ShiftOperator_in_bitWiseShift2816 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_addition_in_bitWiseShift2819 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
	public static final BitSet FOLLOW_multiplication_in_addition2842 = new BitSet(new long[]{0x0000004000000002L,0x0000000001001000L});
	public static final BitSet FOLLOW_set_in_addition2845 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_multiplication_in_addition2858 = new BitSet(new long[]{0x0000004000000002L,0x0000000001001000L});
	public static final BitSet FOLLOW_logicalNot_in_multiplication2877 = new BitSet(new long[]{0x0200000000001002L,0x0000000000400000L});
	public static final BitSet FOLLOW_set_in_multiplication2880 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_logicalNot_in_multiplication2893 = new BitSet(new long[]{0x0200000000001002L,0x0000000000400000L});
	public static final BitSet FOLLOW_Bang_in_logicalNot2912 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_logicalNot_in_logicalNot2915 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_instanceOf_in_logicalNot2923 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_negateOrCast_in_instanceOf2940 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
	public static final BitSet FOLLOW_Instanceof_in_instanceOf2943 = new BitSet(new long[]{0x100000A000810240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_negateOrCast_in_instanceOf2946 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_set_in_negateOrCast2965 = new BitSet(new long[]{0x100000A000810240L,0x0000080820008024L});
	public static final BitSet FOLLOW_increment_in_negateOrCast2978 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OpenBrace_in_negateOrCast2986 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
	public static final BitSet FOLLOW_PrimitiveType_in_negateOrCast2988 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_negateOrCast2990 = new BitSet(new long[]{0x100000A000810240L,0x0000080820008024L});
	public static final BitSet FOLLOW_increment_in_negateOrCast2992 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OpenBrace_in_negateOrCast3010 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_weakLogicalAnd_in_negateOrCast3013 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CloseBrace_in_negateOrCast3015 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_increment_in_negateOrCast3024 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IncrementOperator_in_increment3041 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_name_in_increment3043 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_name_in_increment3061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
	public static final BitSet FOLLOW_IncrementOperator_in_increment3063 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_newOrClone_in_increment3081 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_New_in_newOrClone3098 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_nameOrFunctionCall_in_newOrClone3101 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Clone_in_newOrClone3109 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_name_in_newOrClone3112 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_atomOrReference_in_newOrClone3120 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_atom_in_atomOrReference3137 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_reference_in_atomOrReference3145 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Array_in_arrayDeclaration3162 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_arrayDeclaration3164 = new BitSet(new long[]{0x100000A001812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_arrayEntry_in_arrayDeclaration3167 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_Comma_in_arrayDeclaration3170 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_arrayEntry_in_arrayDeclaration3172 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_CloseBrace_in_arrayDeclaration3178 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_keyValuePair_in_arrayEntry3205 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_arrayEntry3209 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_keyValuePair3228 = new BitSet(new long[]{0x0000000000000400L});
	public static final BitSet FOLLOW_ArrayAssign_in_keyValuePair3230 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_keyValuePair3232 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SingleQuotedString_in_atom3254 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DoubleQuotedString_in_atom3258 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_HereDoc_in_atom3262 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Integer_in_atom3266 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Real_in_atom3270 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Boolean_in_atom3274 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_arrayDeclaration_in_atom3278 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Ampersand_in_reference3296 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_nameOrFunctionCall_in_reference3299 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_nameOrFunctionCall_in_reference3307 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_name_in_nameOrFunctionCall3324 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_nameOrFunctionCall3326 = new BitSet(new long[]{0x100000A001812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_nameOrFunctionCall3329 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_Comma_in_nameOrFunctionCall3332 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_nameOrFunctionCall3334 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_CloseBrace_in_nameOrFunctionCall3340 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_name_in_nameOrFunctionCall3359 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_staticMemberAccess_in_name3371 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
	public static final BitSet FOLLOW_OpenSquareBrace_in_name3374 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CloseSquareBrace_in_name3377 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_memberAccess_in_name3387 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
	public static final BitSet FOLLOW_OpenSquareBrace_in_name3390 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CloseSquareBrace_in_name3393 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_variable_in_name3403 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
	public static final BitSet FOLLOW_OpenSquareBrace_in_name3406 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CloseSquareBrace_in_name3409 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_UnquotedString_in_staticMemberAccess3432 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_ClassMember_in_staticMemberAccess3434 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_variable_in_staticMemberAccess3437 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_variable_in_memberAccess3454 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080008L});
	public static final BitSet FOLLOW_OpenSquareBrace_in_memberAccess3467 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_memberAccess3470 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CloseSquareBrace_in_memberAccess3472 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080008L});
	public static final BitSet FOLLOW_InstanceMember_in_memberAccess3485 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_memberAccess3488 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080008L});
	public static final BitSet FOLLOW_Dollar_in_variable3511 = new BitSet(new long[]{0x0000002000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_variable_in_variable3514 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_UnquotedString_in_variable3522 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_simpleStatement_in_synpred3_Php912 = new BitSet(new long[]{0x0000000000008000L});
	public static final BitSet FOLLOW_BodyString_in_synpred3_Php915 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OpenCurlyBrace_in_synpred4_Php923 = new BitSet(new long[]{0x9D1001B08093A250L,0x00002BE9A0069064L});
	public static final BitSet FOLLOW_statement_in_synpred4_Php925 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CloseCurlyBrace_in_synpred4_Php927 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_bracketedBlock_in_synpred5_Php939 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_fieldModifier_in_synpred23_Php1419 = new BitSet(new long[]{0x0400000000000030L,0x0000002000000000L});
	public static final BitSet FOLLOW_Function_in_synpred23_Php1422 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
	public static final BitSet FOLLOW_UnquotedString_in_synpred23_Php1424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_parametersDefinition_in_synpred23_Php1426 = new BitSet(new long[]{0x0000000000000000L,0x0000000200040000L});
	public static final BitSet FOLLOW_bracketedBlock_in_synpred23_Php1438 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SemiColon_in_synpred23_Php1442 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_conditional_in_synpred33_Php1731 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_conditional_in_synpred53_Php2077 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Or_in_synpred67_Php2493 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_weakLogicalXor_in_synpred67_Php2496 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Xor_in_synpred68_Php2518 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_weakLogicalAnd_in_synpred68_Php2521 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_And_in_synpred69_Php2547 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_assignment_in_synpred69_Php2550 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_name_in_synpred71_Php2569 = new BitSet(new long[]{0x0000400000000800L});
	public static final BitSet FOLLOW_set_in_synpred71_Php2572 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_assignment_in_synpred71_Php2581 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_logicalOr_in_synpred72_Php2607 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_QuestionMark_in_synpred72_Php2609 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_synpred72_Php2611 = new BitSet(new long[]{0x0000000008000000L});
	public static final BitSet FOLLOW_Colon_in_synpred72_Php2613 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_synpred72_Php2615 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_name_in_synpred94_Php3061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
	public static final BitSet FOLLOW_IncrementOperator_in_synpred94_Php3063 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_keyValuePair_in_synpred100_Php3205 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_name_in_synpred110_Php3324 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_OpenBrace_in_synpred110_Php3326 = new BitSet(new long[]{0x100000A001812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_synpred110_Php3329 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_Comma_in_synpred110_Php3332 = new BitSet(new long[]{0x100000A000812240L,0x00000A4820029024L});
	public static final BitSet FOLLOW_expression_in_synpred110_Php3334 = new BitSet(new long[]{0x0000000011000000L});
	public static final BitSet FOLLOW_CloseBrace_in_synpred110_Php3340 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_memberAccess_in_synpred114_Php3387 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
	public static final BitSet FOLLOW_OpenSquareBrace_in_synpred114_Php3390 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CloseSquareBrace_in_synpred114_Php3393 = new BitSet(new long[]{0x0000000000000002L});
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy