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

reflex.ReflexParser Maven / Gradle / Ivy

The newest version!
// $ANTLR 3.5.2 /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g 2016-05-17 11:01:32

package reflex;
import java.util.Map;
import java.util.HashMap;
import reflex.util.function.*;
import reflex.structure.*;
import reflex.util.*;



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 ReflexParser extends Parser {
	public static final String[] tokenNames = new String[] {
		"", "", "", "", "ASSIGNMENT", "Add", "All", "And", 
		"Any", "Archive", "As", "Assert", "Assign", "AsyncCall", "AsyncCallScript", 
		"AsyncOneShot", "AsyncStatus", "B64Compress", "B64Decompress", "BLOCK", 
		"BREAK", "Bool", "Break", "CASE", "CBrace", "CBracket", "CONSTASSIGNMENT", 
		"CONTINUE", "CParen", "Call", "Capabilities", "Case", "Cast", "Catch", 
		"Chain", "Close", "Collate", "Colon", "Comma", "Comment", "Const", "Continue", 
		"Copy", "DEFAULT", "DOTTEDASSIGNMENT", "Date", "Debug", "Def", "Default", 
		"Defined", "Delete", "Difference", "Digit", "Divide", "Do", "DottedIdentifier", 
		"DoubleQuote", "DropWhile", "ESC", "EXP", "EXPORT", "EXP_LIST", "Else", 
		"End", "EndLine", "Equals", "Evals", "Excl", "Export", "FORLIST", "FORTO", 
		"FUNCTION", "FUNC_CALL", "File", "FilterFn", "Fold", "For", "Format", 
		"FromJson", "GT", "GTEquals", "GenSchema", "GenStruct", "GetCache", "GetCh", 
		"GetLine", "HasCapability", "ID_LIST", "IF", "IMPORT", "IMPORTAS", "IMPORTFROM", 
		"IMPORTPARAMS", "INCLUDE", "INDEXES", "IS", "Identifier", "If", "Import", 
		"In", "Int", "Integer", "Is", "IsFile", "IsFolder", "JARURI", "JARURI_LIST", 
		"Join", "Json", "KERNEL_CALL", "KEYVAL", "KEYVAL_LIST", "KernelIdentifier", 
		"Keys", "LIST", "LOOKUP", "LT", "LTEquals", "Lib", "Long", "MAPDEF", "MATCH", 
		"MD5", "METABLOCK", "METAPULL", "MINUSASSIGNMENT", "MapFn", "Match", "Matches", 
		"Merge", "MergeIf", "Message", "MkDir", "Modulus", "Multiply", "NEGATE", 
		"NEquals", "New", "Null", "Number", "OBrace", "OBracket", "OParen", "OTHERWISE", 
		"Or", "Otherwise", "PATCH", "PFORLIST", "PFORTO", "PFor", "PLUSASSIGNMENT", 
		"PORTF", "PORTR", "PULL", "PUSH", "PackageIdentifier", "Patch", "Port", 
		"PortA", "Pow", "Print", "Println", "PropertyPlaceholder", "PullVal", 
		"PushVal", "PutCache", "QMark", "QUALIFIED_FUNC_CALL", "QuotedString", 
		"RANGEINDEX", "RANGELOOKUP", "REQUIRE", "RETURN", "RPull", "RPush", "Rand", 
		"ReadDir", "Remove", "Replace", "Return", "Round", "SColon", "SPARSE", 
		"SPARSELOOKUP", "STATEMENTS", "SWITCH", "Signal", "SingleQuote", "Size", 
		"Sleep", "Sort", "Space", "Spawn", "Split", "SplitWith", "String", "Structure", 
		"Subtract", "Suspend", "SuspendWait", "Switch", "TERNARY", "TakeWhile", 
		"Template", "Throw", "Time", "Timer", "To", "Transpose", "Try", "TypeOf", 
		"UNARY_MIN", "Unique", "Unsupported", "UrlDecode", "UrlEncode", "Use", 
		"Uuid", "Vars", "Wait", "While", "'+='", "'-='", "'..'", "'<<--'", "'array'", 
		"'from'", "'integer'", "'list'", "'meta'", "'number'", "'of'", "'param'", 
		"'property'", "'string'", "'with'"
	};
	public static final int EOF=-1;
	public static final int T__221=221;
	public static final int T__222=222;
	public static final int T__223=223;
	public static final int T__224=224;
	public static final int T__225=225;
	public static final int T__226=226;
	public static final int T__227=227;
	public static final int T__228=228;
	public static final int T__229=229;
	public static final int T__230=230;
	public static final int T__231=231;
	public static final int T__232=232;
	public static final int T__233=233;
	public static final int T__234=234;
	public static final int T__235=235;
	public static final int ASSIGNMENT=4;
	public static final int Add=5;
	public static final int All=6;
	public static final int And=7;
	public static final int Any=8;
	public static final int Archive=9;
	public static final int As=10;
	public static final int Assert=11;
	public static final int Assign=12;
	public static final int AsyncCall=13;
	public static final int AsyncCallScript=14;
	public static final int AsyncOneShot=15;
	public static final int AsyncStatus=16;
	public static final int B64Compress=17;
	public static final int B64Decompress=18;
	public static final int BLOCK=19;
	public static final int BREAK=20;
	public static final int Bool=21;
	public static final int Break=22;
	public static final int CASE=23;
	public static final int CBrace=24;
	public static final int CBracket=25;
	public static final int CONSTASSIGNMENT=26;
	public static final int CONTINUE=27;
	public static final int CParen=28;
	public static final int Call=29;
	public static final int Capabilities=30;
	public static final int Case=31;
	public static final int Cast=32;
	public static final int Catch=33;
	public static final int Chain=34;
	public static final int Close=35;
	public static final int Collate=36;
	public static final int Colon=37;
	public static final int Comma=38;
	public static final int Comment=39;
	public static final int Const=40;
	public static final int Continue=41;
	public static final int Copy=42;
	public static final int DEFAULT=43;
	public static final int DOTTEDASSIGNMENT=44;
	public static final int Date=45;
	public static final int Debug=46;
	public static final int Def=47;
	public static final int Default=48;
	public static final int Defined=49;
	public static final int Delete=50;
	public static final int Difference=51;
	public static final int Digit=52;
	public static final int Divide=53;
	public static final int Do=54;
	public static final int DottedIdentifier=55;
	public static final int DoubleQuote=56;
	public static final int DropWhile=57;
	public static final int ESC=58;
	public static final int EXP=59;
	public static final int EXPORT=60;
	public static final int EXP_LIST=61;
	public static final int Else=62;
	public static final int End=63;
	public static final int EndLine=64;
	public static final int Equals=65;
	public static final int Evals=66;
	public static final int Excl=67;
	public static final int Export=68;
	public static final int FORLIST=69;
	public static final int FORTO=70;
	public static final int FUNCTION=71;
	public static final int FUNC_CALL=72;
	public static final int File=73;
	public static final int FilterFn=74;
	public static final int Fold=75;
	public static final int For=76;
	public static final int Format=77;
	public static final int FromJson=78;
	public static final int GT=79;
	public static final int GTEquals=80;
	public static final int GenSchema=81;
	public static final int GenStruct=82;
	public static final int GetCache=83;
	public static final int GetCh=84;
	public static final int GetLine=85;
	public static final int HasCapability=86;
	public static final int ID_LIST=87;
	public static final int IF=88;
	public static final int IMPORT=89;
	public static final int IMPORTAS=90;
	public static final int IMPORTFROM=91;
	public static final int IMPORTPARAMS=92;
	public static final int INCLUDE=93;
	public static final int INDEXES=94;
	public static final int IS=95;
	public static final int Identifier=96;
	public static final int If=97;
	public static final int Import=98;
	public static final int In=99;
	public static final int Int=100;
	public static final int Integer=101;
	public static final int Is=102;
	public static final int IsFile=103;
	public static final int IsFolder=104;
	public static final int JARURI=105;
	public static final int JARURI_LIST=106;
	public static final int Join=107;
	public static final int Json=108;
	public static final int KERNEL_CALL=109;
	public static final int KEYVAL=110;
	public static final int KEYVAL_LIST=111;
	public static final int KernelIdentifier=112;
	public static final int Keys=113;
	public static final int LIST=114;
	public static final int LOOKUP=115;
	public static final int LT=116;
	public static final int LTEquals=117;
	public static final int Lib=118;
	public static final int Long=119;
	public static final int MAPDEF=120;
	public static final int MATCH=121;
	public static final int MD5=122;
	public static final int METABLOCK=123;
	public static final int METAPULL=124;
	public static final int MINUSASSIGNMENT=125;
	public static final int MapFn=126;
	public static final int Match=127;
	public static final int Matches=128;
	public static final int Merge=129;
	public static final int MergeIf=130;
	public static final int Message=131;
	public static final int MkDir=132;
	public static final int Modulus=133;
	public static final int Multiply=134;
	public static final int NEGATE=135;
	public static final int NEquals=136;
	public static final int New=137;
	public static final int Null=138;
	public static final int Number=139;
	public static final int OBrace=140;
	public static final int OBracket=141;
	public static final int OParen=142;
	public static final int OTHERWISE=143;
	public static final int Or=144;
	public static final int Otherwise=145;
	public static final int PATCH=146;
	public static final int PFORLIST=147;
	public static final int PFORTO=148;
	public static final int PFor=149;
	public static final int PLUSASSIGNMENT=150;
	public static final int PORTF=151;
	public static final int PORTR=152;
	public static final int PULL=153;
	public static final int PUSH=154;
	public static final int PackageIdentifier=155;
	public static final int Patch=156;
	public static final int Port=157;
	public static final int PortA=158;
	public static final int Pow=159;
	public static final int Print=160;
	public static final int Println=161;
	public static final int PropertyPlaceholder=162;
	public static final int PullVal=163;
	public static final int PushVal=164;
	public static final int PutCache=165;
	public static final int QMark=166;
	public static final int QUALIFIED_FUNC_CALL=167;
	public static final int QuotedString=168;
	public static final int RANGEINDEX=169;
	public static final int RANGELOOKUP=170;
	public static final int REQUIRE=171;
	public static final int RETURN=172;
	public static final int RPull=173;
	public static final int RPush=174;
	public static final int Rand=175;
	public static final int ReadDir=176;
	public static final int Remove=177;
	public static final int Replace=178;
	public static final int Return=179;
	public static final int Round=180;
	public static final int SColon=181;
	public static final int SPARSE=182;
	public static final int SPARSELOOKUP=183;
	public static final int STATEMENTS=184;
	public static final int SWITCH=185;
	public static final int Signal=186;
	public static final int SingleQuote=187;
	public static final int Size=188;
	public static final int Sleep=189;
	public static final int Sort=190;
	public static final int Space=191;
	public static final int Spawn=192;
	public static final int Split=193;
	public static final int SplitWith=194;
	public static final int String=195;
	public static final int Structure=196;
	public static final int Subtract=197;
	public static final int Suspend=198;
	public static final int SuspendWait=199;
	public static final int Switch=200;
	public static final int TERNARY=201;
	public static final int TakeWhile=202;
	public static final int Template=203;
	public static final int Throw=204;
	public static final int Time=205;
	public static final int Timer=206;
	public static final int To=207;
	public static final int Transpose=208;
	public static final int Try=209;
	public static final int TypeOf=210;
	public static final int UNARY_MIN=211;
	public static final int Unique=212;
	public static final int Unsupported=213;
	public static final int UrlDecode=214;
	public static final int UrlEncode=215;
	public static final int Use=216;
	public static final int Uuid=217;
	public static final int Vars=218;
	public static final int Wait=219;
	public static final int While=220;

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

	// delegators


	public ReflexParser(TokenStream input) {
		this(input, new RecognizerSharedState());
	}
	public ReflexParser(TokenStream input, RecognizerSharedState state) {
		super(input, state);
	}

	protected TreeAdaptor adaptor = new CommonTreeAdaptor();

	public void setTreeAdaptor(TreeAdaptor adaptor) {
		this.adaptor = adaptor;
	}
	public TreeAdaptor getTreeAdaptor() {
		return adaptor;
	}
	@Override public String[] getTokenNames() { return ReflexParser.tokenNames; }
	@Override public String getGrammarFileName() { return "/Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g"; }


	  public LanguageRegistry languageRegistry = new LanguageRegistry();

	  private NamespaceStack namespaceStack = languageRegistry.getNamespaceStack();


	  protected void mismatch(IntStream input, int ttype, BitSet follow) throws RecognitionException {
	       throw new MismatchedTokenException(ttype, input);
	  }

	   private Stack structureStack = new Stack();
	   private Stack structureTypeStack = new Stack();

	  private void pushStructureMember(String name) {
	   if (structureStack.isEmpty()) {
	   	   structureStack.push(new Structure());
	   }
	   if (structureTypeStack.isEmpty()) {
	       System.err.println("Empty type stack when defining " + name);
	   } else {
	   	   structureStack.peek().addMember(name, structureTypeStack.pop());
	   	}
	  }

	  private void defineStructure(String name, int lineNumber) {
	   Structure s = structureStack.pop();
	   s.setName(name);

	   StructureKey key = getStructureKey(name);
	    try {
	      languageRegistry.registerStructure(key, s);
	    }
	    catch (ReflexException e) {
	      e.setLineNumber(lineNumber);
	      throw e;
	    }
	  }

	 	 public String getErrorMessage(RecognitionException e, String[] tokenNames) {
			List stack = getRuleInvocationStack(e, this.getClass().getName());
			String msg = null;
			if ( e instanceof NoViableAltException ) {
				NoViableAltException nvae = (NoViableAltException)e;
				msg = " no viable alt; token="+e.token+
				" (decision="+nvae.decisionNumber+
				" state "+nvae.stateNumber+")"+
			" decision=<<"+nvae.grammarDecisionDescription+">>";
			}
			else {
				msg = super.getErrorMessage(e, tokenNames);
			}
			return stack+" "+msg;
			}

			public String getTokenErrorDisplay(Token t) {
				return t.toString();
			}


	  public Object recoverFromMismatchedSet(IntStream input, RecognitionException e, BitSet follow) throws RecognitionException {
	     throw e;
	  }

	  private void defineFunction(String id, Object idList, Object block, int lineNumber) {
	    // `idList` is possibly null!  Create an empty tree in that case.
	    CommonTree idListTree = idList == null ? new CommonTree() : (CommonTree)idList;

	    // `block` is never null
	    CommonTree blockTree = (CommonTree)block;

	    // The function name with the number of parameters after it, is the unique key
	    FunctionKey key = getFunctionKey(id, idListTree);
	    try {
	      languageRegistry.registerFunction(key, new Function(id, idListTree, blockTree, namespaceStack));
	    }
	    catch (ReflexException e) {
	      e.setLineNumber(lineNumber);
	      throw e;
	    }
	  }

	  private StructureKey getStructureKey(String structureName) {
	    if (namespaceStack.isEmpty()) {
	      return StructureFactory.createStructureKey(structureName);
	    }
	    else {
	      return StructureFactory.createStructureKey(namespaceStack.asPrefix(), structureName);
	    }
	  }

	  private FunctionKey getFunctionKey(String functionName, CommonTree idListTree) {
	    if (namespaceStack.isEmpty()) {
	      return FunctionFactory.createFunctionKey(functionName, idListTree.getChildCount());
	    }
	    else {
	      return FunctionFactory.createFunctionKey(namespaceStack.asPrefix(), functionName, idListTree.getChildCount());
	    }
	  }

	  /*
	  * This is used to preserve line numbers. See http://stackoverflow.com/questions/9954882/antlr-preserve-line-number-and-position-in-tree-grammar
	  */
	  private CommonToken token(String text, int type, int line) {
	    CommonToken t = new CommonToken(type, text);
	    t.setLine(line);
	    return t;
	  }

	   public MetaScriptInfo scriptInfo = new MetaScriptInfo();

	   private void addMetaProperty(String key, String value) {
	        scriptInfo.setProperty(key, value);
	   }

	  private void defineMetaReturn(String retType, String meta) {
	        scriptInfo.setReturn(retType, meta);
	  }

	  private void addMetaParameter(String parameterName, String parameterType, String description) {
	        scriptInfo.addParameter(parameterName, parameterType, description);
	  }

	  @Override
	  public void reportError(RecognitionException e) {
	      emitErrorMessage(ErrorHandler.getParserExceptionDetails(e));
	      super.reportError(e);
	  }
	  
	  public void error(String error, IntStream input, Token t) throws ReflexRecognitionException {	
	    CommonToken ct = (CommonToken) t;
		int length = ct.getStopIndex() - ct.getStartIndex() +1;
		int start = ct.getCharPositionInLine();
		throw new ReflexRecognitionException(error+" at token "+t.getText()+" "+ErrorHandler.displayError(ct.getInputStream(), ct.getLine(), start, length), input, t);
	  }


	public static class parse_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "parse"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:345:1: parse : ( metaBlock )? mainBlock ;
	public final ReflexParser.parse_return parse() throws RecognitionException {
		ReflexParser.parse_return retval = new ReflexParser.parse_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope metaBlock1 =null;
		ParserRuleReturnScope mainBlock2 =null;


		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:346:3: ( ( metaBlock )? mainBlock )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:346:6: ( metaBlock )? mainBlock
			{
			root_0 = (Object)adaptor.nil();


			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:346:6: ( metaBlock )?
			int alt1=2;
			int LA1_0 = input.LA(1);
			if ( (LA1_0==229) ) {
				alt1=1;
			}
			switch (alt1) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:346:6: metaBlock
					{
					pushFollow(FOLLOW_metaBlock_in_parse370);
					metaBlock1=metaBlock();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, metaBlock1.getTree());

					}
					break;

			}

			pushFollow(FOLLOW_mainBlock_in_parse373);
			mainBlock2=mainBlock();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, mainBlock2.getTree());

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "parse"


	public static class metaBlock_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "metaBlock"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:349:1: metaBlock : 'meta' Do ( metaStatement )* End -> METABLOCK ;
	public final ReflexParser.metaBlock_return metaBlock() throws RecognitionException {
		ReflexParser.metaBlock_return retval = new ReflexParser.metaBlock_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token string_literal3=null;
		Token Do4=null;
		Token End6=null;
		ParserRuleReturnScope metaStatement5 =null;

		Object string_literal3_tree=null;
		Object Do4_tree=null;
		Object End6_tree=null;
		RewriteRuleTokenStream stream_229=new RewriteRuleTokenStream(adaptor,"token 229");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleSubtreeStream stream_metaStatement=new RewriteRuleSubtreeStream(adaptor,"rule metaStatement");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:350:3: ( 'meta' Do ( metaStatement )* End -> METABLOCK )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:350:5: 'meta' Do ( metaStatement )* End
			{
			string_literal3=(Token)match(input,229,FOLLOW_229_in_metaBlock386); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_229.add(string_literal3);

			Do4=(Token)match(input,Do,FOLLOW_Do_in_metaBlock388); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Do.add(Do4);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:350:15: ( metaStatement )*
			loop2:
			while (true) {
				int alt2=2;
				int LA2_0 = input.LA(1);
				if ( (LA2_0==Return||(LA2_0 >= 232 && LA2_0 <= 233)) ) {
					alt2=1;
				}

				switch (alt2) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:350:15: metaStatement
					{
					pushFollow(FOLLOW_metaStatement_in_metaBlock390);
					metaStatement5=metaStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_metaStatement.add(metaStatement5.getTree());
					}
					break;

				default :
					break loop2;
				}
			}

			End6=(Token)match(input,End,FOLLOW_End_in_metaBlock393); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End6);

			// AST REWRITE
			// elements: 
			// 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 = (Object)adaptor.nil();
			// 350:34: -> METABLOCK
			{
				adaptor.addChild(root_0, (Object)adaptor.create(METABLOCK, "METABLOCK"));
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "metaBlock"


	public static class metaStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "metaStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:353:1: metaStatement : ( 'param' name= String ',' metaType= ( 'list' | 'map' | 'number' | 'string' ) ',' desc= String ';' | Return ret= ( 'list' | 'map' | 'number' | 'string' ) ',' meta= String ';' | 'property' name= String ',' value= String ';' );
	public final ReflexParser.metaStatement_return metaStatement() throws RecognitionException {
		ReflexParser.metaStatement_return retval = new ReflexParser.metaStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token name=null;
		Token metaType=null;
		Token desc=null;
		Token ret=null;
		Token meta=null;
		Token value=null;
		Token string_literal7=null;
		Token char_literal8=null;
		Token char_literal9=null;
		Token char_literal10=null;
		Token Return11=null;
		Token char_literal12=null;
		Token char_literal13=null;
		Token string_literal14=null;
		Token char_literal15=null;
		Token char_literal16=null;

		Object name_tree=null;
		Object metaType_tree=null;
		Object desc_tree=null;
		Object ret_tree=null;
		Object meta_tree=null;
		Object value_tree=null;
		Object string_literal7_tree=null;
		Object char_literal8_tree=null;
		Object char_literal9_tree=null;
		Object char_literal10_tree=null;
		Object Return11_tree=null;
		Object char_literal12_tree=null;
		Object char_literal13_tree=null;
		Object string_literal14_tree=null;
		Object char_literal15_tree=null;
		Object char_literal16_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:354:3: ( 'param' name= String ',' metaType= ( 'list' | 'map' | 'number' | 'string' ) ',' desc= String ';' | Return ret= ( 'list' | 'map' | 'number' | 'string' ) ',' meta= String ';' | 'property' name= String ',' value= String ';' )
			int alt3=3;
			switch ( input.LA(1) ) {
			case 232:
				{
				alt3=1;
				}
				break;
			case Return:
				{
				alt3=2;
				}
				break;
			case 233:
				{
				alt3=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 3, 0, input);
				throw nvae;
			}
			switch (alt3) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:354:5: 'param' name= String ',' metaType= ( 'list' | 'map' | 'number' | 'string' ) ',' desc= String ';'
					{
					root_0 = (Object)adaptor.nil();


					string_literal7=(Token)match(input,232,FOLLOW_232_in_metaStatement410); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal7_tree = (Object)adaptor.create(string_literal7);
					adaptor.addChild(root_0, string_literal7_tree);
					}

					name=(Token)match(input,String,FOLLOW_String_in_metaStatement415); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					name_tree = (Object)adaptor.create(name);
					adaptor.addChild(root_0, name_tree);
					}

					char_literal8=(Token)match(input,Comma,FOLLOW_Comma_in_metaStatement417); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal8_tree = (Object)adaptor.create(char_literal8);
					adaptor.addChild(root_0, char_literal8_tree);
					}

					metaType=input.LT(1);
					if ( input.LA(1)==MapFn||input.LA(1)==228||input.LA(1)==230||input.LA(1)==234 ) {
						input.consume();
						if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(metaType));
						state.errorRecovery=false;
						state.failed=false;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						MismatchedSetException mse = new MismatchedSetException(null,input);
						throw mse;
					}
					char_literal9=(Token)match(input,Comma,FOLLOW_Comma_in_metaStatement437); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal9_tree = (Object)adaptor.create(char_literal9);
					adaptor.addChild(root_0, char_literal9_tree);
					}

					desc=(Token)match(input,String,FOLLOW_String_in_metaStatement441); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					desc_tree = (Object)adaptor.create(desc);
					adaptor.addChild(root_0, desc_tree);
					}

					char_literal10=(Token)match(input,SColon,FOLLOW_SColon_in_metaStatement444); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal10_tree = (Object)adaptor.create(char_literal10);
					adaptor.addChild(root_0, char_literal10_tree);
					}

					if ( state.backtracking==0 ) { addMetaParameter((name!=null?name.getText():null), (metaType!=null?metaType.getText():null), (desc!=null?desc.getText():null)); }
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:355:5: Return ret= ( 'list' | 'map' | 'number' | 'string' ) ',' meta= String ';'
					{
					root_0 = (Object)adaptor.nil();


					Return11=(Token)match(input,Return,FOLLOW_Return_in_metaStatement452); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Return11_tree = (Object)adaptor.create(Return11);
					adaptor.addChild(root_0, Return11_tree);
					}

					ret=input.LT(1);
					if ( input.LA(1)==MapFn||input.LA(1)==228||input.LA(1)==230||input.LA(1)==234 ) {
						input.consume();
						if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(ret));
						state.errorRecovery=false;
						state.failed=false;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						MismatchedSetException mse = new MismatchedSetException(null,input);
						throw mse;
					}
					char_literal12=(Token)match(input,Comma,FOLLOW_Comma_in_metaStatement472); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal12_tree = (Object)adaptor.create(char_literal12);
					adaptor.addChild(root_0, char_literal12_tree);
					}

					meta=(Token)match(input,String,FOLLOW_String_in_metaStatement476); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					meta_tree = (Object)adaptor.create(meta);
					adaptor.addChild(root_0, meta_tree);
					}

					char_literal13=(Token)match(input,SColon,FOLLOW_SColon_in_metaStatement478); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal13_tree = (Object)adaptor.create(char_literal13);
					adaptor.addChild(root_0, char_literal13_tree);
					}

					if ( state.backtracking==0 ) { defineMetaReturn((ret!=null?ret.getText():null), (meta!=null?meta.getText():null)); }
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:356:5: 'property' name= String ',' value= String ';'
					{
					root_0 = (Object)adaptor.nil();


					string_literal14=(Token)match(input,233,FOLLOW_233_in_metaStatement486); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal14_tree = (Object)adaptor.create(string_literal14);
					adaptor.addChild(root_0, string_literal14_tree);
					}

					name=(Token)match(input,String,FOLLOW_String_in_metaStatement490); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					name_tree = (Object)adaptor.create(name);
					adaptor.addChild(root_0, name_tree);
					}

					char_literal15=(Token)match(input,Comma,FOLLOW_Comma_in_metaStatement492); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal15_tree = (Object)adaptor.create(char_literal15);
					adaptor.addChild(root_0, char_literal15_tree);
					}

					value=(Token)match(input,String,FOLLOW_String_in_metaStatement496); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					value_tree = (Object)adaptor.create(value);
					adaptor.addChild(root_0, value_tree);
					}

					char_literal16=(Token)match(input,SColon,FOLLOW_SColon_in_metaStatement498); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal16_tree = (Object)adaptor.create(char_literal16);
					adaptor.addChild(root_0, char_literal16_tree);
					}

					if ( state.backtracking==0 ) { addMetaProperty((name!=null?name.getText():null), (value!=null?value.getText():null)); }
					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "metaStatement"


	public static class mainBlock_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "mainBlock"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:359:1: mainBlock : block EOF -> block ;
	public final ReflexParser.mainBlock_return mainBlock() throws RecognitionException {
		ReflexParser.mainBlock_return retval = new ReflexParser.mainBlock_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token EOF18=null;
		ParserRuleReturnScope block17 =null;

		Object EOF18_tree=null;
		RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:360:3: ( block EOF -> block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:360:6: block EOF
			{
			pushFollow(FOLLOW_block_in_mainBlock514);
			block17=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block17.getTree());
			EOF18=(Token)match(input,EOF,FOLLOW_EOF_in_mainBlock516); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_EOF.add(EOF18);

			// AST REWRITE
			// elements: block
			// 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 = (Object)adaptor.nil();
			// 360:16: -> block
			{
				adaptor.addChild(root_0, stream_block.nextTree());
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "mainBlock"


	public static class block_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "block"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:363:1: block : ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) ) -> ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) ) ;
	public final ReflexParser.block_return block() throws RecognitionException {
		ReflexParser.block_return retval = new ReflexParser.block_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Return22=null;
		Token char_literal24=null;
		ParserRuleReturnScope statement19 =null;
		ParserRuleReturnScope functionDecl20 =null;
		ParserRuleReturnScope structureDecl21 =null;
		ParserRuleReturnScope expression23 =null;

		Object Return22_tree=null;
		Object char_literal24_tree=null;
		RewriteRuleTokenStream stream_Return=new RewriteRuleTokenStream(adaptor,"token Return");
		RewriteRuleTokenStream stream_SColon=new RewriteRuleTokenStream(adaptor,"token SColon");
		RewriteRuleSubtreeStream stream_functionDecl=new RewriteRuleSubtreeStream(adaptor,"rule functionDecl");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
		RewriteRuleSubtreeStream stream_structureDecl=new RewriteRuleSubtreeStream(adaptor,"rule structureDecl");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:3: ( ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) ) -> ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:5: ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) )
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:5: ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:6: ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? )
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:6: ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:7: ( statement | functionDecl | structureDecl )* ( Return expression ';' )?
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:7: ( statement | functionDecl | structureDecl )*
			loop4:
			while (true) {
				int alt4=4;
				alt4 = dfa4.predict(input);
				switch (alt4) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:8: statement
					{
					pushFollow(FOLLOW_statement_in_block536);
					statement19=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement19.getTree());
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:20: functionDecl
					{
					pushFollow(FOLLOW_functionDecl_in_block540);
					functionDecl20=functionDecl();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_functionDecl.add(functionDecl20.getTree());
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:35: structureDecl
					{
					pushFollow(FOLLOW_structureDecl_in_block544);
					structureDecl21=structureDecl();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_structureDecl.add(structureDecl21.getTree());
					}
					break;

				default :
					break loop4;
				}
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:53: ( Return expression ';' )?
			int alt5=2;
			int LA5_0 = input.LA(1);
			if ( (LA5_0==Return) ) {
				int LA5_1 = input.LA(2);
				if ( (synpred14_Reflex()) ) {
					alt5=1;
				}
			}
			switch (alt5) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:54: Return expression ';'
					{
					Return22=(Token)match(input,Return,FOLLOW_Return_in_block551); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Return.add(Return22);

					pushFollow(FOLLOW_expression_in_block553);
					expression23=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression23.getTree());
					char_literal24=(Token)match(input,SColon,FOLLOW_SColon_in_block555); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal24);

					}
					break;

			}

			}

			}

			// AST REWRITE
			// elements: statement, 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 = (Object)adaptor.nil();
			// 365:6: -> ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:365:9: ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(BLOCK, "BLOCK"), root_1);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:365:17: ^( STATEMENTS ( statement )* )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENTS, "STATEMENTS"), root_2);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:365:30: ( statement )*
				while ( stream_statement.hasNext() ) {
					adaptor.addChild(root_2, stream_statement.nextTree());
				}
				stream_statement.reset();

				adaptor.addChild(root_1, root_2);
				}

				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:365:42: ^( RETURN ( expression )? )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(RETURN, "RETURN"), root_2);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:365:51: ( expression )?
				if ( stream_expression.hasNext() ) {
					adaptor.addChild(root_2, stream_expression.nextTree());
				}
				stream_expression.reset();

				adaptor.addChild(root_1, root_2);
				}

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "block"


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


	// $ANTLR start "statement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:369:1: statement : ( assignment ';' -> assignment | importStatement ';' -> importStatement | port ';' -> port | pull ';' -> pull | metapull ';' -> metapull | push ';' -> push | patchStatement | functionCall ';' -> functionCall | throwStatement ';' -> throwStatement | breakStatement ';' -> breakStatement | continueStatement ';' -> continueStatement | matchStatement | switchStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement | exportStatement | Unsupported | SColon | Identifier );
	public final ReflexParser.statement_return statement() throws RecognitionException {
		ReflexParser.statement_return retval = new ReflexParser.statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal26=null;
		Token char_literal28=null;
		Token char_literal30=null;
		Token char_literal32=null;
		Token char_literal34=null;
		Token char_literal36=null;
		Token char_literal39=null;
		Token char_literal41=null;
		Token char_literal43=null;
		Token char_literal45=null;
		Token Unsupported54=null;
		Token SColon55=null;
		Token Identifier56=null;
		ParserRuleReturnScope assignment25 =null;
		ParserRuleReturnScope importStatement27 =null;
		ParserRuleReturnScope port29 =null;
		ParserRuleReturnScope pull31 =null;
		ParserRuleReturnScope metapull33 =null;
		ParserRuleReturnScope push35 =null;
		ParserRuleReturnScope patchStatement37 =null;
		ParserRuleReturnScope functionCall38 =null;
		ParserRuleReturnScope throwStatement40 =null;
		ParserRuleReturnScope breakStatement42 =null;
		ParserRuleReturnScope continueStatement44 =null;
		ParserRuleReturnScope matchStatement46 =null;
		ParserRuleReturnScope switchStatement47 =null;
		ParserRuleReturnScope ifStatement48 =null;
		ParserRuleReturnScope forStatement49 =null;
		ParserRuleReturnScope pforStatement50 =null;
		ParserRuleReturnScope whileStatement51 =null;
		ParserRuleReturnScope guardedStatement52 =null;
		ParserRuleReturnScope exportStatement53 =null;

		Object char_literal26_tree=null;
		Object char_literal28_tree=null;
		Object char_literal30_tree=null;
		Object char_literal32_tree=null;
		Object char_literal34_tree=null;
		Object char_literal36_tree=null;
		Object char_literal39_tree=null;
		Object char_literal41_tree=null;
		Object char_literal43_tree=null;
		Object char_literal45_tree=null;
		Object Unsupported54_tree=null;
		Object SColon55_tree=null;
		Object Identifier56_tree=null;
		RewriteRuleTokenStream stream_SColon=new RewriteRuleTokenStream(adaptor,"token SColon");
		RewriteRuleSubtreeStream stream_pull=new RewriteRuleSubtreeStream(adaptor,"rule pull");
		RewriteRuleSubtreeStream stream_importStatement=new RewriteRuleSubtreeStream(adaptor,"rule importStatement");
		RewriteRuleSubtreeStream stream_port=new RewriteRuleSubtreeStream(adaptor,"rule port");
		RewriteRuleSubtreeStream stream_throwStatement=new RewriteRuleSubtreeStream(adaptor,"rule throwStatement");
		RewriteRuleSubtreeStream stream_assignment=new RewriteRuleSubtreeStream(adaptor,"rule assignment");
		RewriteRuleSubtreeStream stream_functionCall=new RewriteRuleSubtreeStream(adaptor,"rule functionCall");
		RewriteRuleSubtreeStream stream_metapull=new RewriteRuleSubtreeStream(adaptor,"rule metapull");
		RewriteRuleSubtreeStream stream_breakStatement=new RewriteRuleSubtreeStream(adaptor,"rule breakStatement");
		RewriteRuleSubtreeStream stream_continueStatement=new RewriteRuleSubtreeStream(adaptor,"rule continueStatement");
		RewriteRuleSubtreeStream stream_push=new RewriteRuleSubtreeStream(adaptor,"rule push");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:369:12: ( assignment ';' -> assignment | importStatement ';' -> importStatement | port ';' -> port | pull ';' -> pull | metapull ';' -> metapull | push ';' -> push | patchStatement | functionCall ';' -> functionCall | throwStatement ';' -> throwStatement | breakStatement ';' -> breakStatement | continueStatement ';' -> continueStatement | matchStatement | switchStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement | exportStatement | Unsupported | SColon | Identifier )
			int alt6=22;
			alt6 = dfa6.predict(input);
			switch (alt6) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:369:15: assignment ';'
					{
					pushFollow(FOLLOW_assignment_in_statement598);
					assignment25=assignment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assignment.add(assignment25.getTree());
					char_literal26=(Token)match(input,SColon,FOLLOW_SColon_in_statement600); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal26);

					// AST REWRITE
					// elements: assignment
					// 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 = (Object)adaptor.nil();
					// 369:32: -> assignment
					{
						adaptor.addChild(root_0, stream_assignment.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:6: importStatement ';'
					{
					pushFollow(FOLLOW_importStatement_in_statement613);
					importStatement27=importStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_importStatement.add(importStatement27.getTree());
					char_literal28=(Token)match(input,SColon,FOLLOW_SColon_in_statement615); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal28);

					// AST REWRITE
					// elements: importStatement
					// 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 = (Object)adaptor.nil();
					// 370:26: -> importStatement
					{
						adaptor.addChild(root_0, stream_importStatement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:371:6: port ';'
					{
					pushFollow(FOLLOW_port_in_statement626);
					port29=port();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_port.add(port29.getTree());
					char_literal30=(Token)match(input,SColon,FOLLOW_SColon_in_statement628); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal30);

					// AST REWRITE
					// elements: port
					// 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 = (Object)adaptor.nil();
					// 371:15: -> port
					{
						adaptor.addChild(root_0, stream_port.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:372:6: pull ';'
					{
					pushFollow(FOLLOW_pull_in_statement639);
					pull31=pull();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_pull.add(pull31.getTree());
					char_literal32=(Token)match(input,SColon,FOLLOW_SColon_in_statement641); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal32);

					// AST REWRITE
					// elements: pull
					// 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 = (Object)adaptor.nil();
					// 372:15: -> pull
					{
						adaptor.addChild(root_0, stream_pull.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:373:6: metapull ';'
					{
					pushFollow(FOLLOW_metapull_in_statement652);
					metapull33=metapull();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_metapull.add(metapull33.getTree());
					char_literal34=(Token)match(input,SColon,FOLLOW_SColon_in_statement654); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal34);

					// AST REWRITE
					// elements: metapull
					// 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 = (Object)adaptor.nil();
					// 373:19: -> metapull
					{
						adaptor.addChild(root_0, stream_metapull.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:374:6: push ';'
					{
					pushFollow(FOLLOW_push_in_statement665);
					push35=push();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_push.add(push35.getTree());
					char_literal36=(Token)match(input,SColon,FOLLOW_SColon_in_statement667); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal36);

					// AST REWRITE
					// elements: push
					// 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 = (Object)adaptor.nil();
					// 374:15: -> push
					{
						adaptor.addChild(root_0, stream_push.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:375:6: patchStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_patchStatement_in_statement678);
					patchStatement37=patchStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, patchStatement37.getTree());

					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:376:6: functionCall ';'
					{
					pushFollow(FOLLOW_functionCall_in_statement685);
					functionCall38=functionCall();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_functionCall.add(functionCall38.getTree());
					char_literal39=(Token)match(input,SColon,FOLLOW_SColon_in_statement687); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal39);

					// AST REWRITE
					// elements: functionCall
					// 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 = (Object)adaptor.nil();
					// 376:23: -> functionCall
					{
						adaptor.addChild(root_0, stream_functionCall.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:377:6: throwStatement ';'
					{
					pushFollow(FOLLOW_throwStatement_in_statement698);
					throwStatement40=throwStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_throwStatement.add(throwStatement40.getTree());
					char_literal41=(Token)match(input,SColon,FOLLOW_SColon_in_statement700); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal41);

					// AST REWRITE
					// elements: throwStatement
					// 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 = (Object)adaptor.nil();
					// 377:25: -> throwStatement
					{
						adaptor.addChild(root_0, stream_throwStatement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:378:6: breakStatement ';'
					{
					pushFollow(FOLLOW_breakStatement_in_statement711);
					breakStatement42=breakStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_breakStatement.add(breakStatement42.getTree());
					char_literal43=(Token)match(input,SColon,FOLLOW_SColon_in_statement713); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal43);

					// AST REWRITE
					// elements: breakStatement
					// 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 = (Object)adaptor.nil();
					// 378:25: -> breakStatement
					{
						adaptor.addChild(root_0, stream_breakStatement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:379:6: continueStatement ';'
					{
					pushFollow(FOLLOW_continueStatement_in_statement724);
					continueStatement44=continueStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_continueStatement.add(continueStatement44.getTree());
					char_literal45=(Token)match(input,SColon,FOLLOW_SColon_in_statement726); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal45);

					// AST REWRITE
					// elements: continueStatement
					// 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 = (Object)adaptor.nil();
					// 379:28: -> continueStatement
					{
						adaptor.addChild(root_0, stream_continueStatement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:380:6: matchStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_matchStatement_in_statement737);
					matchStatement46=matchStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, matchStatement46.getTree());

					}
					break;
				case 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:381:6: switchStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_switchStatement_in_statement744);
					switchStatement47=switchStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, switchStatement47.getTree());

					}
					break;
				case 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:382:6: ifStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_ifStatement_in_statement751);
					ifStatement48=ifStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, ifStatement48.getTree());

					}
					break;
				case 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:383:6: forStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_forStatement_in_statement758);
					forStatement49=forStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, forStatement49.getTree());

					}
					break;
				case 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:384:6: pforStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_pforStatement_in_statement765);
					pforStatement50=pforStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, pforStatement50.getTree());

					}
					break;
				case 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:385:6: whileStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_whileStatement_in_statement772);
					whileStatement51=whileStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, whileStatement51.getTree());

					}
					break;
				case 18 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:386:6: guardedStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_guardedStatement_in_statement779);
					guardedStatement52=guardedStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, guardedStatement52.getTree());

					}
					break;
				case 19 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:387:6: exportStatement
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_exportStatement_in_statement786);
					exportStatement53=exportStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, exportStatement53.getTree());

					}
					break;
				case 20 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:390:5: Unsupported
					{
					root_0 = (Object)adaptor.nil();


					Unsupported54=(Token)match(input,Unsupported,FOLLOW_Unsupported_in_statement794); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Unsupported54_tree = (Object)adaptor.create(Unsupported54);
					adaptor.addChild(root_0, Unsupported54_tree);
					}

					if ( state.backtracking==0 ) { error("Unsupported Operation", input, Unsupported54); }
					}
					break;
				case 21 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:391:8: SColon
					{
					root_0 = (Object)adaptor.nil();


					SColon55=(Token)match(input,SColon,FOLLOW_SColon_in_statement805); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					SColon55_tree = (Object)adaptor.create(SColon55);
					adaptor.addChild(root_0, SColon55_tree);
					}

					if ( state.backtracking==0 ) { error("Unexpected character", input, SColon55); }
					}
					break;
				case 22 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:392:7: Identifier
					{
					root_0 = (Object)adaptor.nil();


					Identifier56=(Token)match(input,Identifier,FOLLOW_Identifier_in_statement816); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Identifier56_tree = (Object)adaptor.create(Identifier56);
					adaptor.addChild(root_0, Identifier56_tree);
					}

					if ( state.backtracking==0 ) { error("Unexpected identifier", input, Identifier56); }
					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "statement"


	public static class exportStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "exportStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:400:1: exportStatement : Export Identifier block End -> ^( EXPORT[$Identifier] Identifier block ) ;
	public final ReflexParser.exportStatement_return exportStatement() throws RecognitionException {
		ReflexParser.exportStatement_return retval = new ReflexParser.exportStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Export57=null;
		Token Identifier58=null;
		Token End60=null;
		ParserRuleReturnScope block59 =null;

		Object Export57_tree=null;
		Object Identifier58_tree=null;
		Object End60_tree=null;
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_Export=new RewriteRuleTokenStream(adaptor,"token Export");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:404:3: ( Export Identifier block End -> ^( EXPORT[$Identifier] Identifier block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:404:5: Export Identifier block End
			{
			Export57=(Token)match(input,Export,FOLLOW_Export_in_exportStatement856); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Export.add(Export57);

			Identifier58=(Token)match(input,Identifier,FOLLOW_Identifier_in_exportStatement858); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier58);

			if ( state.backtracking==0 ) { namespaceStack.push((Identifier58!=null?Identifier58.getText():null)); }
			pushFollow(FOLLOW_block_in_exportStatement862);
			block59=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block59.getTree());
			End60=(Token)match(input,End,FOLLOW_End_in_exportStatement864); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End60);

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

			root_0 = (Object)adaptor.nil();
			// 405:5: -> ^( EXPORT[$Identifier] Identifier block )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:405:8: ^( EXPORT[$Identifier] Identifier block )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXPORT, Identifier58), root_1);
				adaptor.addChild(root_1, stream_Identifier.nextNode());
				adaptor.addChild(root_1, stream_block.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "exportStatement"


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


	// $ANTLR start "assignment"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:409:1: assignment : ( Const Identifier '=' expression -> ^( CONSTASSIGNMENT[$Identifier] Identifier expression ) |i= ( Identifier | DottedIdentifier ) ( indexes )? '=' expression -> ^( ASSIGNMENT[$i] $i ( indexes )? expression ) | Identifier '+=' expression -> ^( PLUSASSIGNMENT[$Identifier] Identifier expression ) | Identifier '-=' expression -> ^( MINUSASSIGNMENT[$Identifier] Identifier expression ) );
	public final ReflexParser.assignment_return assignment() throws RecognitionException {
		ReflexParser.assignment_return retval = new ReflexParser.assignment_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token i=null;
		Token Const61=null;
		Token Identifier62=null;
		Token char_literal63=null;
		Token char_literal66=null;
		Token Identifier68=null;
		Token string_literal69=null;
		Token Identifier71=null;
		Token string_literal72=null;
		ParserRuleReturnScope expression64 =null;
		ParserRuleReturnScope indexes65 =null;
		ParserRuleReturnScope expression67 =null;
		ParserRuleReturnScope expression70 =null;
		ParserRuleReturnScope expression73 =null;

		Object i_tree=null;
		Object Const61_tree=null;
		Object Identifier62_tree=null;
		Object char_literal63_tree=null;
		Object char_literal66_tree=null;
		Object Identifier68_tree=null;
		Object string_literal69_tree=null;
		Object Identifier71_tree=null;
		Object string_literal72_tree=null;
		RewriteRuleTokenStream stream_221=new RewriteRuleTokenStream(adaptor,"token 221");
		RewriteRuleTokenStream stream_222=new RewriteRuleTokenStream(adaptor,"token 222");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_DottedIdentifier=new RewriteRuleTokenStream(adaptor,"token DottedIdentifier");
		RewriteRuleTokenStream stream_Const=new RewriteRuleTokenStream(adaptor,"token Const");
		RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_indexes=new RewriteRuleSubtreeStream(adaptor,"rule indexes");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:410:3: ( Const Identifier '=' expression -> ^( CONSTASSIGNMENT[$Identifier] Identifier expression ) |i= ( Identifier | DottedIdentifier ) ( indexes )? '=' expression -> ^( ASSIGNMENT[$i] $i ( indexes )? expression ) | Identifier '+=' expression -> ^( PLUSASSIGNMENT[$Identifier] Identifier expression ) | Identifier '-=' expression -> ^( MINUSASSIGNMENT[$Identifier] Identifier expression ) )
			int alt9=4;
			switch ( input.LA(1) ) {
			case Const:
				{
				alt9=1;
				}
				break;
			case Identifier:
				{
				switch ( input.LA(2) ) {
				case 221:
					{
					alt9=3;
					}
					break;
				case 222:
					{
					alt9=4;
					}
					break;
				case Assign:
				case OBracket:
					{
					alt9=2;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 9, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case DottedIdentifier:
				{
				alt9=2;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 9, 0, input);
				throw nvae;
			}
			switch (alt9) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:410:6: Const Identifier '=' expression
					{
					Const61=(Token)match(input,Const,FOLLOW_Const_in_assignment894); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Const.add(Const61);

					Identifier62=(Token)match(input,Identifier,FOLLOW_Identifier_in_assignment896); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier62);

					char_literal63=(Token)match(input,Assign,FOLLOW_Assign_in_assignment898); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assign.add(char_literal63);

					pushFollow(FOLLOW_expression_in_assignment900);
					expression64=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression64.getTree());
					// AST REWRITE
					// elements: expression, Identifier
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 411:6: -> ^( CONSTASSIGNMENT[$Identifier] Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:411:9: ^( CONSTASSIGNMENT[$Identifier] Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTASSIGNMENT, Identifier62), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:412:7: i= ( Identifier | DottedIdentifier ) ( indexes )? '=' expression
					{
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:412:9: ( Identifier | DottedIdentifier )
					int alt7=2;
					int LA7_0 = input.LA(1);
					if ( (LA7_0==Identifier) ) {
						alt7=1;
					}
					else if ( (LA7_0==DottedIdentifier) ) {
						alt7=2;
					}

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

					switch (alt7) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:412:10: Identifier
							{
							i=(Token)match(input,Identifier,FOLLOW_Identifier_in_assignment927); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Identifier.add(i);

							}
							break;
						case 2 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:412:23: DottedIdentifier
							{
							i=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_assignment931); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_DottedIdentifier.add(i);

							}
							break;

					}

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:412:41: ( indexes )?
					int alt8=2;
					int LA8_0 = input.LA(1);
					if ( (LA8_0==OBracket) ) {
						alt8=1;
					}
					switch (alt8) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:412:41: indexes
							{
							pushFollow(FOLLOW_indexes_in_assignment934);
							indexes65=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes65.getTree());
							}
							break;

					}

					char_literal66=(Token)match(input,Assign,FOLLOW_Assign_in_assignment937); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assign.add(char_literal66);

					pushFollow(FOLLOW_expression_in_assignment939);
					expression67=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression67.getTree());
					// AST REWRITE
					// elements: i, indexes, expression
					// token labels: i
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleTokenStream stream_i=new RewriteRuleTokenStream(adaptor,"token i",i);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 413:6: -> ^( ASSIGNMENT[$i] $i ( indexes )? expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:413:9: ^( ASSIGNMENT[$i] $i ( indexes )? expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ASSIGNMENT, i), root_1);
						adaptor.addChild(root_1, stream_i.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:413:29: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:416:7: Identifier '+=' expression
					{
					Identifier68=(Token)match(input,Identifier,FOLLOW_Identifier_in_assignment969); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier68);

					string_literal69=(Token)match(input,221,FOLLOW_221_in_assignment971); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_221.add(string_literal69);

					pushFollow(FOLLOW_expression_in_assignment973);
					expression70=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression70.getTree());
					// AST REWRITE
					// elements: Identifier, 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 = (Object)adaptor.nil();
					// 417:6: -> ^( PLUSASSIGNMENT[$Identifier] Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:417:9: ^( PLUSASSIGNMENT[$Identifier] Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PLUSASSIGNMENT, Identifier68), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:418:7: Identifier '-=' expression
					{
					Identifier71=(Token)match(input,Identifier,FOLLOW_Identifier_in_assignment997); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier71);

					string_literal72=(Token)match(input,222,FOLLOW_222_in_assignment999); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_222.add(string_literal72);

					pushFollow(FOLLOW_expression_in_assignment1001);
					expression73=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression73.getTree());
					// AST REWRITE
					// elements: expression, Identifier
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 419:6: -> ^( MINUSASSIGNMENT[$Identifier] Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:419:9: ^( MINUSASSIGNMENT[$Identifier] Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MINUSASSIGNMENT, Identifier71), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "assignment"


	public static class breakStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "breakStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:422:1: breakStatement : Break -> BREAK ;
	public final ReflexParser.breakStatement_return breakStatement() throws RecognitionException {
		ReflexParser.breakStatement_return retval = new ReflexParser.breakStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Break74=null;

		Object Break74_tree=null;
		RewriteRuleTokenStream stream_Break=new RewriteRuleTokenStream(adaptor,"token Break");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:423:3: ( Break -> BREAK )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:423:5: Break
			{
			Break74=(Token)match(input,Break,FOLLOW_Break_in_breakStatement1030); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Break.add(Break74);

			// AST REWRITE
			// elements: 
			// 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 = (Object)adaptor.nil();
			// 423:11: -> BREAK
			{
				adaptor.addChild(root_0, (Object)adaptor.create(BREAK, "BREAK"));
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "breakStatement"


	public static class continueStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "continueStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:426:1: continueStatement : Continue -> CONTINUE ;
	public final ReflexParser.continueStatement_return continueStatement() throws RecognitionException {
		ReflexParser.continueStatement_return retval = new ReflexParser.continueStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Continue75=null;

		Object Continue75_tree=null;
		RewriteRuleTokenStream stream_Continue=new RewriteRuleTokenStream(adaptor,"token Continue");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:427:3: ( Continue -> CONTINUE )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:427:5: Continue
			{
			Continue75=(Token)match(input,Continue,FOLLOW_Continue_in_continueStatement1047); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Continue.add(Continue75);

			// AST REWRITE
			// elements: 
			// 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 = (Object)adaptor.nil();
			// 427:14: -> CONTINUE
			{
				adaptor.addChild(root_0, (Object)adaptor.create(CONTINUE, "CONTINUE"));
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "continueStatement"


	public static class importStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "importStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:430:1: importStatement : Import l= Identifier ( 'as' r= Identifier )? ( 'with' '(' p= exprList ')' )? ( 'from' j= jarUriList )? -> ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) ^( IMPORTFROM ( $j)? ) ) ;
	public final ReflexParser.importStatement_return importStatement() throws RecognitionException {
		ReflexParser.importStatement_return retval = new ReflexParser.importStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token l=null;
		Token r=null;
		Token Import76=null;
		Token string_literal77=null;
		Token string_literal78=null;
		Token char_literal79=null;
		Token char_literal80=null;
		Token string_literal81=null;
		ParserRuleReturnScope p =null;
		ParserRuleReturnScope j =null;

		Object l_tree=null;
		Object r_tree=null;
		Object Import76_tree=null;
		Object string_literal77_tree=null;
		Object string_literal78_tree=null;
		Object char_literal79_tree=null;
		Object char_literal80_tree=null;
		Object string_literal81_tree=null;
		RewriteRuleTokenStream stream_As=new RewriteRuleTokenStream(adaptor,"token As");
		RewriteRuleTokenStream stream_Import=new RewriteRuleTokenStream(adaptor,"token Import");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_235=new RewriteRuleTokenStream(adaptor,"token 235");
		RewriteRuleTokenStream stream_226=new RewriteRuleTokenStream(adaptor,"token 226");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleSubtreeStream stream_exprList=new RewriteRuleSubtreeStream(adaptor,"rule exprList");
		RewriteRuleSubtreeStream stream_jarUriList=new RewriteRuleSubtreeStream(adaptor,"rule jarUriList");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:3: ( Import l= Identifier ( 'as' r= Identifier )? ( 'with' '(' p= exprList ')' )? ( 'from' j= jarUriList )? -> ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) ^( IMPORTFROM ( $j)? ) ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:5: Import l= Identifier ( 'as' r= Identifier )? ( 'with' '(' p= exprList ')' )? ( 'from' j= jarUriList )?
			{
			Import76=(Token)match(input,Import,FOLLOW_Import_in_importStatement1064); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Import.add(Import76);

			l=(Token)match(input,Identifier,FOLLOW_Identifier_in_importStatement1068); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(l);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:25: ( 'as' r= Identifier )?
			int alt10=2;
			int LA10_0 = input.LA(1);
			if ( (LA10_0==As) ) {
				alt10=1;
			}
			switch (alt10) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:26: 'as' r= Identifier
					{
					string_literal77=(Token)match(input,As,FOLLOW_As_in_importStatement1071); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_As.add(string_literal77);

					r=(Token)match(input,Identifier,FOLLOW_Identifier_in_importStatement1075); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(r);

					}
					break;

			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:46: ( 'with' '(' p= exprList ')' )?
			int alt11=2;
			int LA11_0 = input.LA(1);
			if ( (LA11_0==235) ) {
				alt11=1;
			}
			switch (alt11) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:47: 'with' '(' p= exprList ')'
					{
					string_literal78=(Token)match(input,235,FOLLOW_235_in_importStatement1080); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_235.add(string_literal78);

					char_literal79=(Token)match(input,OParen,FOLLOW_OParen_in_importStatement1082); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal79);

					pushFollow(FOLLOW_exprList_in_importStatement1086);
					p=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(p.getTree());
					char_literal80=(Token)match(input,CParen,FOLLOW_CParen_in_importStatement1088); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal80);

					}
					break;

			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:75: ( 'from' j= jarUriList )?
			int alt12=2;
			int LA12_0 = input.LA(1);
			if ( (LA12_0==226) ) {
				alt12=1;
			}
			switch (alt12) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:76: 'from' j= jarUriList
					{
					string_literal81=(Token)match(input,226,FOLLOW_226_in_importStatement1093); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_226.add(string_literal81);

					pushFollow(FOLLOW_jarUriList_in_importStatement1097);
					j=jarUriList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_jarUriList.add(j.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: l, r, p, j
			// token labels: r, l
			// rule labels: p, j, retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleTokenStream stream_r=new RewriteRuleTokenStream(adaptor,"token r",r);
			RewriteRuleTokenStream stream_l=new RewriteRuleTokenStream(adaptor,"token l",l);
			RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);
			RewriteRuleSubtreeStream stream_j=new RewriteRuleSubtreeStream(adaptor,"rule j",j!=null?j.getTree():null);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 431:98: -> ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) ^( IMPORTFROM ( $j)? ) )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:101: ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) ^( IMPORTFROM ( $j)? ) )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IMPORT, Import76), root_1);
				adaptor.addChild(root_1, stream_l.nextNode());
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:122: ^( IMPORTAS ( $r)? )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(IMPORTAS, "IMPORTAS"), root_2);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:134: ( $r)?
				if ( stream_r.hasNext() ) {
					adaptor.addChild(root_2, stream_r.nextNode());
				}
				stream_r.reset();

				adaptor.addChild(root_1, root_2);
				}

				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:138: ^( IMPORTPARAMS ( $p)? )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(IMPORTPARAMS, "IMPORTPARAMS"), root_2);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:154: ( $p)?
				if ( stream_p.hasNext() ) {
					adaptor.addChild(root_2, stream_p.nextTree());
				}
				stream_p.reset();

				adaptor.addChild(root_1, root_2);
				}

				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:158: ^( IMPORTFROM ( $j)? )
				{
				Object root_2 = (Object)adaptor.nil();
				root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(IMPORTFROM, "IMPORTFROM"), root_2);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:172: ( $j)?
				if ( stream_j.hasNext() ) {
					adaptor.addChild(root_2, stream_j.nextTree());
				}
				stream_j.reset();

				adaptor.addChild(root_1, root_2);
				}

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "importStatement"


	public static class port_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "port"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:434:1: port : (l= expression PortA r= expression -> ^( PORTF[$PortA] $l $r) | PortA expression -> ^( PORTR[$PortA] expression ) );
	public final ReflexParser.port_return port() throws RecognitionException {
		ReflexParser.port_return retval = new ReflexParser.port_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PortA82=null;
		Token PortA83=null;
		ParserRuleReturnScope l =null;
		ParserRuleReturnScope r =null;
		ParserRuleReturnScope expression84 =null;

		Object PortA82_tree=null;
		Object PortA83_tree=null;
		RewriteRuleTokenStream stream_PortA=new RewriteRuleTokenStream(adaptor,"token PortA");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:435:3: (l= expression PortA r= expression -> ^( PORTF[$PortA] $l $r) | PortA expression -> ^( PORTR[$PortA] expression ) )
			int alt13=2;
			int LA13_0 = input.LA(1);
			if ( (LA13_0==All||(LA13_0 >= Any && LA13_0 <= Archive)||LA13_0==Assert||(LA13_0 >= AsyncCall && LA13_0 <= AsyncCallScript)||(LA13_0 >= AsyncStatus && LA13_0 <= B64Decompress)||LA13_0==Bool||(LA13_0 >= Call && LA13_0 <= Capabilities)||LA13_0==Cast||(LA13_0 >= Chain && LA13_0 <= Collate)||LA13_0==Copy||(LA13_0 >= Date && LA13_0 <= Debug)||(LA13_0 >= Defined && LA13_0 <= Difference)||LA13_0==DottedIdentifier||LA13_0==DropWhile||(LA13_0 >= Evals && LA13_0 <= Excl)||(LA13_0 >= File && LA13_0 <= Fold)||(LA13_0 >= Format && LA13_0 <= FromJson)||(LA13_0 >= GenSchema && LA13_0 <= HasCapability)||LA13_0==Identifier||LA13_0==Integer||(LA13_0 >= IsFile && LA13_0 <= IsFolder)||(LA13_0 >= Join && LA13_0 <= Json)||(LA13_0 >= KernelIdentifier && LA13_0 <= Keys)||(LA13_0 >= Lib && LA13_0 <= Long)||LA13_0==MD5||LA13_0==MapFn||(LA13_0 >= Matches && LA13_0 <= MkDir)||(LA13_0 >= New && LA13_0 <= OParen)||LA13_0==PackageIdentifier||LA13_0==Port||(LA13_0 >= Print && LA13_0 <= PropertyPlaceholder)||LA13_0==PutCache||LA13_0==QuotedString||(LA13_0 >= RPull && LA13_0 <= Replace)||LA13_0==Round||LA13_0==Signal||(LA13_0 >= Size && LA13_0 <= Sort)||(LA13_0 >= Spawn && LA13_0 <= String)||(LA13_0 >= Subtract && LA13_0 <= SuspendWait)||(LA13_0 >= TakeWhile && LA13_0 <= Template)||(LA13_0 >= Time && LA13_0 <= Timer)||LA13_0==Transpose||LA13_0==TypeOf||LA13_0==Unique||(LA13_0 >= UrlDecode && LA13_0 <= UrlEncode)||(LA13_0 >= Uuid && LA13_0 <= Wait)) ) {
				alt13=1;
			}
			else if ( (LA13_0==PortA) ) {
				alt13=2;
			}

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

			switch (alt13) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:435:6: l= expression PortA r= expression
					{
					pushFollow(FOLLOW_expression_in_port1149);
					l=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(l.getTree());
					PortA82=(Token)match(input,PortA,FOLLOW_PortA_in_port1151); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PortA.add(PortA82);

					pushFollow(FOLLOW_expression_in_port1155);
					r=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(r.getTree());
					// AST REWRITE
					// elements: r, l
					// token labels: 
					// rule labels: r, l, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_r=new RewriteRuleSubtreeStream(adaptor,"rule r",r!=null?r.getTree():null);
					RewriteRuleSubtreeStream stream_l=new RewriteRuleSubtreeStream(adaptor,"rule l",l!=null?l.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 435:39: -> ^( PORTF[$PortA] $l $r)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:435:42: ^( PORTF[$PortA] $l $r)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PORTF, PortA82), root_1);
						adaptor.addChild(root_1, stream_l.nextTree());
						adaptor.addChild(root_1, stream_r.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:436:6: PortA expression
					{
					PortA83=(Token)match(input,PortA,FOLLOW_PortA_in_port1176); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PortA.add(PortA83);

					pushFollow(FOLLOW_expression_in_port1178);
					expression84=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression84.getTree());
					// AST REWRITE
					// elements: 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 = (Object)adaptor.nil();
					// 436:39: -> ^( PORTR[$PortA] expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:436:42: ^( PORTR[$PortA] expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PORTR, PortA83), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "port"


	public static class patchStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "patchStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:439:1: patchStatement : ( expression '<-->' Identifier '{' block '}' -> ^( PATCH[$Identifier] expression Identifier block ) | expression '<-->' Identifier Do block End -> ^( PATCH[$Identifier] expression Identifier block ) );
	public final ReflexParser.patchStatement_return patchStatement() throws RecognitionException {
		ReflexParser.patchStatement_return retval = new ReflexParser.patchStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token string_literal86=null;
		Token Identifier87=null;
		Token char_literal88=null;
		Token char_literal90=null;
		Token string_literal92=null;
		Token Identifier93=null;
		Token Do94=null;
		Token End96=null;
		ParserRuleReturnScope expression85 =null;
		ParserRuleReturnScope block89 =null;
		ParserRuleReturnScope expression91 =null;
		ParserRuleReturnScope block95 =null;

		Object string_literal86_tree=null;
		Object Identifier87_tree=null;
		Object char_literal88_tree=null;
		Object char_literal90_tree=null;
		Object string_literal92_tree=null;
		Object Identifier93_tree=null;
		Object Do94_tree=null;
		Object End96_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleTokenStream stream_Patch=new RewriteRuleTokenStream(adaptor,"token Patch");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:440:3: ( expression '<-->' Identifier '{' block '}' -> ^( PATCH[$Identifier] expression Identifier block ) | expression '<-->' Identifier Do block End -> ^( PATCH[$Identifier] expression Identifier block ) )
			int alt14=2;
			alt14 = dfa14.predict(input);
			switch (alt14) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:440:5: expression '<-->' Identifier '{' block '}'
					{
					pushFollow(FOLLOW_expression_in_patchStatement1216);
					expression85=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression85.getTree());
					string_literal86=(Token)match(input,Patch,FOLLOW_Patch_in_patchStatement1218); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Patch.add(string_literal86);

					Identifier87=(Token)match(input,Identifier,FOLLOW_Identifier_in_patchStatement1220); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier87);

					char_literal88=(Token)match(input,OBrace,FOLLOW_OBrace_in_patchStatement1222); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal88);

					pushFollow(FOLLOW_block_in_patchStatement1224);
					block89=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block89.getTree());
					char_literal90=(Token)match(input,CBrace,FOLLOW_CBrace_in_patchStatement1226); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal90);

					// AST REWRITE
					// elements: Identifier, expression, block
					// 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 = (Object)adaptor.nil();
					// 440:48: -> ^( PATCH[$Identifier] expression Identifier block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:440:51: ^( PATCH[$Identifier] expression Identifier block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PATCH, Identifier87), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:441:5: expression '<-->' Identifier Do block End
					{
					pushFollow(FOLLOW_expression_in_patchStatement1245);
					expression91=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression91.getTree());
					string_literal92=(Token)match(input,Patch,FOLLOW_Patch_in_patchStatement1247); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Patch.add(string_literal92);

					Identifier93=(Token)match(input,Identifier,FOLLOW_Identifier_in_patchStatement1249); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier93);

					Do94=(Token)match(input,Do,FOLLOW_Do_in_patchStatement1251); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do94);

					pushFollow(FOLLOW_block_in_patchStatement1253);
					block95=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block95.getTree());
					End96=(Token)match(input,End,FOLLOW_End_in_patchStatement1255); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End96);

					// AST REWRITE
					// elements: Identifier, expression, block
					// 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 = (Object)adaptor.nil();
					// 441:47: -> ^( PATCH[$Identifier] expression Identifier block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:441:50: ^( PATCH[$Identifier] expression Identifier block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PATCH, Identifier93), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "patchStatement"


	public static class pull_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "pull"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:444:1: pull : Identifier '<--' expression -> ^( PULL[$Identifier] Identifier expression ) ;
	public final ReflexParser.pull_return pull() throws RecognitionException {
		ReflexParser.pull_return retval = new ReflexParser.pull_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Identifier97=null;
		Token string_literal98=null;
		ParserRuleReturnScope expression99 =null;

		Object Identifier97_tree=null;
		Object string_literal98_tree=null;
		RewriteRuleTokenStream stream_PullVal=new RewriteRuleTokenStream(adaptor,"token PullVal");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:445:3: ( Identifier '<--' expression -> ^( PULL[$Identifier] Identifier expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:445:5: Identifier '<--' expression
			{
			Identifier97=(Token)match(input,Identifier,FOLLOW_Identifier_in_pull1281); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier97);

			string_literal98=(Token)match(input,PullVal,FOLLOW_PullVal_in_pull1283); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_PullVal.add(string_literal98);

			pushFollow(FOLLOW_expression_in_pull1285);
			expression99=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression99.getTree());
			// AST REWRITE
			// elements: expression, Identifier
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 446:6: -> ^( PULL[$Identifier] Identifier expression )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:446:9: ^( PULL[$Identifier] Identifier expression )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PULL, Identifier97), root_1);
				adaptor.addChild(root_1, stream_Identifier.nextNode());
				adaptor.addChild(root_1, stream_expression.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "pull"


	public static class metapull_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "metapull"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:449:1: metapull : Identifier '<<--' expression -> ^( METAPULL[$Identifier] Identifier expression ) ;
	public final ReflexParser.metapull_return metapull() throws RecognitionException {
		ReflexParser.metapull_return retval = new ReflexParser.metapull_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Identifier100=null;
		Token string_literal101=null;
		ParserRuleReturnScope expression102 =null;

		Object Identifier100_tree=null;
		Object string_literal101_tree=null;
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_224=new RewriteRuleTokenStream(adaptor,"token 224");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:450:3: ( Identifier '<<--' expression -> ^( METAPULL[$Identifier] Identifier expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:450:5: Identifier '<<--' expression
			{
			Identifier100=(Token)match(input,Identifier,FOLLOW_Identifier_in_metapull1314); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier100);

			string_literal101=(Token)match(input,224,FOLLOW_224_in_metapull1316); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_224.add(string_literal101);

			pushFollow(FOLLOW_expression_in_metapull1318);
			expression102=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression102.getTree());
			// AST REWRITE
			// elements: expression, Identifier
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 451:6: -> ^( METAPULL[$Identifier] Identifier expression )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:451:9: ^( METAPULL[$Identifier] Identifier expression )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(METAPULL, Identifier100), root_1);
				adaptor.addChild(root_1, stream_Identifier.nextNode());
				adaptor.addChild(root_1, stream_expression.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "metapull"


	public static class push_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "push"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:454:1: push : l= expression '-->' r= expression -> ^( PUSH[$l.start] $l $r) ;
	public final ReflexParser.push_return push() throws RecognitionException {
		ReflexParser.push_return retval = new ReflexParser.push_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token string_literal103=null;
		ParserRuleReturnScope l =null;
		ParserRuleReturnScope r =null;

		Object string_literal103_tree=null;
		RewriteRuleTokenStream stream_PushVal=new RewriteRuleTokenStream(adaptor,"token PushVal");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:455:3: (l= expression '-->' r= expression -> ^( PUSH[$l.start] $l $r) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:455:5: l= expression '-->' r= expression
			{
			pushFollow(FOLLOW_expression_in_push1349);
			l=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(l.getTree());
			string_literal103=(Token)match(input,PushVal,FOLLOW_PushVal_in_push1351); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_PushVal.add(string_literal103);

			pushFollow(FOLLOW_expression_in_push1355);
			r=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(r.getTree());
			// AST REWRITE
			// elements: l, r
			// token labels: 
			// rule labels: r, l, retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_r=new RewriteRuleSubtreeStream(adaptor,"rule r",r!=null?r.getTree():null);
			RewriteRuleSubtreeStream stream_l=new RewriteRuleSubtreeStream(adaptor,"rule l",l!=null?l.getTree():null);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 456:6: -> ^( PUSH[$l.start] $l $r)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:456:9: ^( PUSH[$l.start] $l $r)
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PUSH, (l!=null?(l.start):null)), root_1);
				adaptor.addChild(root_1, stream_l.nextTree());
				adaptor.addChild(root_1, stream_r.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "push"


	public static class throwStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "throwStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:459:1: throwStatement : Throw expression -> ^( Throw expression ) ;
	public final ReflexParser.throwStatement_return throwStatement() throws RecognitionException {
		ReflexParser.throwStatement_return retval = new ReflexParser.throwStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Throw104=null;
		ParserRuleReturnScope expression105 =null;

		Object Throw104_tree=null;
		RewriteRuleTokenStream stream_Throw=new RewriteRuleTokenStream(adaptor,"token Throw");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:460:3: ( Throw expression -> ^( Throw expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:460:6: Throw expression
			{
			Throw104=(Token)match(input,Throw,FOLLOW_Throw_in_throwStatement1387); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Throw.add(Throw104);

			pushFollow(FOLLOW_expression_in_throwStatement1389);
			expression105=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression105.getTree());
			// AST REWRITE
			// elements: expression, Throw
			// 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 = (Object)adaptor.nil();
			// 461:6: -> ^( Throw expression )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:461:9: ^( Throw expression )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot(stream_Throw.nextNode(), root_1);
				adaptor.addChild(root_1, stream_expression.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "throwStatement"


	public static class functionCall_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "functionCall"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:463:1: functionCall : ( PackageIdentifier '(' ( exprList )? ')' -> ^( FUNC_CALL[$PackageIdentifier] PackageIdentifier ( exprList )? ) | Println '(' ( expression )? ')' -> ^( FUNC_CALL[$Println] Println ( expression )? ) | Print '(' expression ')' -> ^( FUNC_CALL[$Print] Print expression ) | Size '(' expression ')' -> ^( FUNC_CALL[$Size] Size expression ) | Keys '(' expression ')' -> ^( FUNC_CALL[$Keys] Keys expression ) | Sort '(' arg= expression ',' asc= expression ')' -> ^( FUNC_CALL[$Sort] Sort $arg $asc) | Collate '(' arg= expression ',' locale= expression ')' -> ^( FUNC_CALL[$Collate] Collate $arg $locale) | Date '(' ( exprList )? ')' -> ^( FUNC_CALL[$Date] Date ( exprList )? ) | Time '(' ( expression )? ')' -> ^( FUNC_CALL[$Time] Time ( expression )? ) | GetLine '(' ( expression )? ')' -> ^( FUNC_CALL[$GetLine] GetLine ( expression )? ) | GetCh '(' ( expression )? ')' -> ^( FUNC_CALL[$GetCh] GetCh ( expression )? ) | Capabilities '(' ')' -> ^( FUNC_CALL[$Capabilities] Capabilities ) | HasCapability '(' expression ')' -> ^( FUNC_CALL[$HasCapability] HasCapability expression ) | Cast '(' a= expression ',' b= expression ')' -> ^( FUNC_CALL[$Cast] Cast $a $b) | Identifier '(' ( exprList )? ')' -> ^( FUNC_CALL[$Identifier] Identifier ( exprList )? ) | DottedIdentifier '(' ( exprList )? ')' -> ^( DottedIdentifier ( exprList )? ) | func2 );
	public final ReflexParser.functionCall_return functionCall() throws RecognitionException {
		ReflexParser.functionCall_return retval = new ReflexParser.functionCall_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PackageIdentifier106=null;
		Token char_literal107=null;
		Token char_literal109=null;
		Token Println110=null;
		Token char_literal111=null;
		Token char_literal113=null;
		Token Print114=null;
		Token char_literal115=null;
		Token char_literal117=null;
		Token Size118=null;
		Token char_literal119=null;
		Token char_literal121=null;
		Token Keys122=null;
		Token char_literal123=null;
		Token char_literal125=null;
		Token Sort126=null;
		Token char_literal127=null;
		Token char_literal128=null;
		Token char_literal129=null;
		Token Collate130=null;
		Token char_literal131=null;
		Token char_literal132=null;
		Token char_literal133=null;
		Token Date134=null;
		Token char_literal135=null;
		Token char_literal137=null;
		Token Time138=null;
		Token char_literal139=null;
		Token char_literal141=null;
		Token GetLine142=null;
		Token char_literal143=null;
		Token char_literal145=null;
		Token GetCh146=null;
		Token char_literal147=null;
		Token char_literal149=null;
		Token Capabilities150=null;
		Token char_literal151=null;
		Token char_literal152=null;
		Token HasCapability153=null;
		Token char_literal154=null;
		Token char_literal156=null;
		Token Cast157=null;
		Token char_literal158=null;
		Token char_literal159=null;
		Token char_literal160=null;
		Token Identifier161=null;
		Token char_literal162=null;
		Token char_literal164=null;
		Token DottedIdentifier165=null;
		Token char_literal166=null;
		Token char_literal168=null;
		ParserRuleReturnScope arg =null;
		ParserRuleReturnScope asc =null;
		ParserRuleReturnScope locale =null;
		ParserRuleReturnScope a =null;
		ParserRuleReturnScope b =null;
		ParserRuleReturnScope exprList108 =null;
		ParserRuleReturnScope expression112 =null;
		ParserRuleReturnScope expression116 =null;
		ParserRuleReturnScope expression120 =null;
		ParserRuleReturnScope expression124 =null;
		ParserRuleReturnScope exprList136 =null;
		ParserRuleReturnScope expression140 =null;
		ParserRuleReturnScope expression144 =null;
		ParserRuleReturnScope expression148 =null;
		ParserRuleReturnScope expression155 =null;
		ParserRuleReturnScope exprList163 =null;
		ParserRuleReturnScope exprList167 =null;
		ParserRuleReturnScope func2169 =null;

		Object PackageIdentifier106_tree=null;
		Object char_literal107_tree=null;
		Object char_literal109_tree=null;
		Object Println110_tree=null;
		Object char_literal111_tree=null;
		Object char_literal113_tree=null;
		Object Print114_tree=null;
		Object char_literal115_tree=null;
		Object char_literal117_tree=null;
		Object Size118_tree=null;
		Object char_literal119_tree=null;
		Object char_literal121_tree=null;
		Object Keys122_tree=null;
		Object char_literal123_tree=null;
		Object char_literal125_tree=null;
		Object Sort126_tree=null;
		Object char_literal127_tree=null;
		Object char_literal128_tree=null;
		Object char_literal129_tree=null;
		Object Collate130_tree=null;
		Object char_literal131_tree=null;
		Object char_literal132_tree=null;
		Object char_literal133_tree=null;
		Object Date134_tree=null;
		Object char_literal135_tree=null;
		Object char_literal137_tree=null;
		Object Time138_tree=null;
		Object char_literal139_tree=null;
		Object char_literal141_tree=null;
		Object GetLine142_tree=null;
		Object char_literal143_tree=null;
		Object char_literal145_tree=null;
		Object GetCh146_tree=null;
		Object char_literal147_tree=null;
		Object char_literal149_tree=null;
		Object Capabilities150_tree=null;
		Object char_literal151_tree=null;
		Object char_literal152_tree=null;
		Object HasCapability153_tree=null;
		Object char_literal154_tree=null;
		Object char_literal156_tree=null;
		Object Cast157_tree=null;
		Object char_literal158_tree=null;
		Object char_literal159_tree=null;
		Object char_literal160_tree=null;
		Object Identifier161_tree=null;
		Object char_literal162_tree=null;
		Object char_literal164_tree=null;
		Object DottedIdentifier165_tree=null;
		Object char_literal166_tree=null;
		Object char_literal168_tree=null;
		RewriteRuleTokenStream stream_Cast=new RewriteRuleTokenStream(adaptor,"token Cast");
		RewriteRuleTokenStream stream_GetCh=new RewriteRuleTokenStream(adaptor,"token GetCh");
		RewriteRuleTokenStream stream_Size=new RewriteRuleTokenStream(adaptor,"token Size");
		RewriteRuleTokenStream stream_Collate=new RewriteRuleTokenStream(adaptor,"token Collate");
		RewriteRuleTokenStream stream_Time=new RewriteRuleTokenStream(adaptor,"token Time");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_Date=new RewriteRuleTokenStream(adaptor,"token Date");
		RewriteRuleTokenStream stream_GetLine=new RewriteRuleTokenStream(adaptor,"token GetLine");
		RewriteRuleTokenStream stream_Print=new RewriteRuleTokenStream(adaptor,"token Print");
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_HasCapability=new RewriteRuleTokenStream(adaptor,"token HasCapability");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_PackageIdentifier=new RewriteRuleTokenStream(adaptor,"token PackageIdentifier");
		RewriteRuleTokenStream stream_DottedIdentifier=new RewriteRuleTokenStream(adaptor,"token DottedIdentifier");
		RewriteRuleTokenStream stream_Capabilities=new RewriteRuleTokenStream(adaptor,"token Capabilities");
		RewriteRuleTokenStream stream_Keys=new RewriteRuleTokenStream(adaptor,"token Keys");
		RewriteRuleTokenStream stream_Println=new RewriteRuleTokenStream(adaptor,"token Println");
		RewriteRuleTokenStream stream_Sort=new RewriteRuleTokenStream(adaptor,"token Sort");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_exprList=new RewriteRuleSubtreeStream(adaptor,"rule exprList");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:3: ( PackageIdentifier '(' ( exprList )? ')' -> ^( FUNC_CALL[$PackageIdentifier] PackageIdentifier ( exprList )? ) | Println '(' ( expression )? ')' -> ^( FUNC_CALL[$Println] Println ( expression )? ) | Print '(' expression ')' -> ^( FUNC_CALL[$Print] Print expression ) | Size '(' expression ')' -> ^( FUNC_CALL[$Size] Size expression ) | Keys '(' expression ')' -> ^( FUNC_CALL[$Keys] Keys expression ) | Sort '(' arg= expression ',' asc= expression ')' -> ^( FUNC_CALL[$Sort] Sort $arg $asc) | Collate '(' arg= expression ',' locale= expression ')' -> ^( FUNC_CALL[$Collate] Collate $arg $locale) | Date '(' ( exprList )? ')' -> ^( FUNC_CALL[$Date] Date ( exprList )? ) | Time '(' ( expression )? ')' -> ^( FUNC_CALL[$Time] Time ( expression )? ) | GetLine '(' ( expression )? ')' -> ^( FUNC_CALL[$GetLine] GetLine ( expression )? ) | GetCh '(' ( expression )? ')' -> ^( FUNC_CALL[$GetCh] GetCh ( expression )? ) | Capabilities '(' ')' -> ^( FUNC_CALL[$Capabilities] Capabilities ) | HasCapability '(' expression ')' -> ^( FUNC_CALL[$HasCapability] HasCapability expression ) | Cast '(' a= expression ',' b= expression ')' -> ^( FUNC_CALL[$Cast] Cast $a $b) | Identifier '(' ( exprList )? ')' -> ^( FUNC_CALL[$Identifier] Identifier ( exprList )? ) | DottedIdentifier '(' ( exprList )? ')' -> ^( DottedIdentifier ( exprList )? ) | func2 )
			int alt23=17;
			switch ( input.LA(1) ) {
			case PackageIdentifier:
				{
				alt23=1;
				}
				break;
			case Println:
				{
				alt23=2;
				}
				break;
			case Print:
				{
				alt23=3;
				}
				break;
			case Size:
				{
				alt23=4;
				}
				break;
			case Keys:
				{
				alt23=5;
				}
				break;
			case Sort:
				{
				alt23=6;
				}
				break;
			case Collate:
				{
				alt23=7;
				}
				break;
			case Date:
				{
				alt23=8;
				}
				break;
			case Time:
				{
				alt23=9;
				}
				break;
			case GetLine:
				{
				alt23=10;
				}
				break;
			case GetCh:
				{
				alt23=11;
				}
				break;
			case Capabilities:
				{
				alt23=12;
				}
				break;
			case HasCapability:
				{
				alt23=13;
				}
				break;
			case Cast:
				{
				alt23=14;
				}
				break;
			case Identifier:
				{
				alt23=15;
				}
				break;
			case DottedIdentifier:
				{
				alt23=16;
				}
				break;
			case All:
			case Any:
			case Archive:
			case Assert:
			case AsyncCall:
			case AsyncCallScript:
			case AsyncStatus:
			case B64Compress:
			case B64Decompress:
			case Call:
			case Chain:
			case Close:
			case Copy:
			case Debug:
			case Defined:
			case Delete:
			case Difference:
			case DropWhile:
			case Evals:
			case File:
			case FilterFn:
			case Fold:
			case Format:
			case FromJson:
			case GenSchema:
			case GenStruct:
			case GetCache:
			case IsFile:
			case IsFolder:
			case Join:
			case Json:
			case KernelIdentifier:
			case Lib:
			case MD5:
			case MapFn:
			case Matches:
			case Merge:
			case MergeIf:
			case Message:
			case MkDir:
			case New:
			case Port:
			case PutCache:
			case RPull:
			case RPush:
			case Rand:
			case ReadDir:
			case Remove:
			case Replace:
			case Round:
			case Signal:
			case Sleep:
			case Spawn:
			case Split:
			case SplitWith:
			case Suspend:
			case SuspendWait:
			case TakeWhile:
			case Template:
			case Timer:
			case Transpose:
			case TypeOf:
			case Unique:
			case UrlDecode:
			case UrlEncode:
			case Uuid:
			case Vars:
			case Wait:
				{
				alt23=17;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 23, 0, input);
				throw nvae;
			}
			switch (alt23) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:6: PackageIdentifier '(' ( exprList )? ')'
					{
					PackageIdentifier106=(Token)match(input,PackageIdentifier,FOLLOW_PackageIdentifier_in_functionCall1413); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PackageIdentifier.add(PackageIdentifier106);

					char_literal107=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1415); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal107);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:28: ( exprList )?
					int alt15=2;
					int LA15_0 = input.LA(1);
					if ( (LA15_0==All||(LA15_0 >= Any && LA15_0 <= Archive)||LA15_0==Assert||(LA15_0 >= AsyncCall && LA15_0 <= AsyncCallScript)||(LA15_0 >= AsyncStatus && LA15_0 <= B64Decompress)||LA15_0==Bool||(LA15_0 >= Call && LA15_0 <= Capabilities)||LA15_0==Cast||(LA15_0 >= Chain && LA15_0 <= Collate)||LA15_0==Copy||(LA15_0 >= Date && LA15_0 <= Debug)||(LA15_0 >= Defined && LA15_0 <= Difference)||LA15_0==DottedIdentifier||LA15_0==DropWhile||(LA15_0 >= Evals && LA15_0 <= Excl)||(LA15_0 >= File && LA15_0 <= Fold)||(LA15_0 >= Format && LA15_0 <= FromJson)||(LA15_0 >= GenSchema && LA15_0 <= HasCapability)||LA15_0==Identifier||LA15_0==Integer||(LA15_0 >= IsFile && LA15_0 <= IsFolder)||(LA15_0 >= Join && LA15_0 <= Json)||(LA15_0 >= KernelIdentifier && LA15_0 <= Keys)||(LA15_0 >= Lib && LA15_0 <= Long)||LA15_0==MD5||LA15_0==MapFn||(LA15_0 >= Matches && LA15_0 <= MkDir)||(LA15_0 >= New && LA15_0 <= OParen)||LA15_0==PackageIdentifier||LA15_0==Port||(LA15_0 >= Print && LA15_0 <= PropertyPlaceholder)||LA15_0==PutCache||LA15_0==QuotedString||(LA15_0 >= RPull && LA15_0 <= Replace)||LA15_0==Round||LA15_0==Signal||(LA15_0 >= Size && LA15_0 <= Sort)||(LA15_0 >= Spawn && LA15_0 <= String)||(LA15_0 >= Subtract && LA15_0 <= SuspendWait)||(LA15_0 >= TakeWhile && LA15_0 <= Template)||(LA15_0 >= Time && LA15_0 <= Timer)||LA15_0==Transpose||LA15_0==TypeOf||LA15_0==Unique||(LA15_0 >= UrlDecode && LA15_0 <= UrlEncode)||(LA15_0 >= Uuid && LA15_0 <= Wait)) ) {
						alt15=1;
					}
					switch (alt15) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:28: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1417);
							exprList108=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList108.getTree());
							}
							break;

					}

					char_literal109=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1420); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal109);

					// AST REWRITE
					// elements: exprList, PackageIdentifier
					// 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 = (Object)adaptor.nil();
					// 464:42: -> ^( FUNC_CALL[$PackageIdentifier] PackageIdentifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:45: ^( FUNC_CALL[$PackageIdentifier] PackageIdentifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, PackageIdentifier106), root_1);
						adaptor.addChild(root_1, stream_PackageIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:95: ( exprList )?
						if ( stream_exprList.hasNext() ) {
							adaptor.addChild(root_1, stream_exprList.nextTree());
						}
						stream_exprList.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:465:6: Println '(' ( expression )? ')'
					{
					Println110=(Token)match(input,Println,FOLLOW_Println_in_functionCall1439); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Println.add(Println110);

					char_literal111=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1441); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal111);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:465:18: ( expression )?
					int alt16=2;
					int LA16_0 = input.LA(1);
					if ( (LA16_0==All||(LA16_0 >= Any && LA16_0 <= Archive)||LA16_0==Assert||(LA16_0 >= AsyncCall && LA16_0 <= AsyncCallScript)||(LA16_0 >= AsyncStatus && LA16_0 <= B64Decompress)||LA16_0==Bool||(LA16_0 >= Call && LA16_0 <= Capabilities)||LA16_0==Cast||(LA16_0 >= Chain && LA16_0 <= Collate)||LA16_0==Copy||(LA16_0 >= Date && LA16_0 <= Debug)||(LA16_0 >= Defined && LA16_0 <= Difference)||LA16_0==DottedIdentifier||LA16_0==DropWhile||(LA16_0 >= Evals && LA16_0 <= Excl)||(LA16_0 >= File && LA16_0 <= Fold)||(LA16_0 >= Format && LA16_0 <= FromJson)||(LA16_0 >= GenSchema && LA16_0 <= HasCapability)||LA16_0==Identifier||LA16_0==Integer||(LA16_0 >= IsFile && LA16_0 <= IsFolder)||(LA16_0 >= Join && LA16_0 <= Json)||(LA16_0 >= KernelIdentifier && LA16_0 <= Keys)||(LA16_0 >= Lib && LA16_0 <= Long)||LA16_0==MD5||LA16_0==MapFn||(LA16_0 >= Matches && LA16_0 <= MkDir)||(LA16_0 >= New && LA16_0 <= OParen)||LA16_0==PackageIdentifier||LA16_0==Port||(LA16_0 >= Print && LA16_0 <= PropertyPlaceholder)||LA16_0==PutCache||LA16_0==QuotedString||(LA16_0 >= RPull && LA16_0 <= Replace)||LA16_0==Round||LA16_0==Signal||(LA16_0 >= Size && LA16_0 <= Sort)||(LA16_0 >= Spawn && LA16_0 <= String)||(LA16_0 >= Subtract && LA16_0 <= SuspendWait)||(LA16_0 >= TakeWhile && LA16_0 <= Template)||(LA16_0 >= Time && LA16_0 <= Timer)||LA16_0==Transpose||LA16_0==TypeOf||LA16_0==Unique||(LA16_0 >= UrlDecode && LA16_0 <= UrlEncode)||(LA16_0 >= Uuid && LA16_0 <= Wait)) ) {
						alt16=1;
					}
					switch (alt16) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:465:18: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1443);
							expression112=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression112.getTree());
							}
							break;

					}

					char_literal113=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1446); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal113);

					// AST REWRITE
					// elements: expression, Println
					// 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 = (Object)adaptor.nil();
					// 465:35: -> ^( FUNC_CALL[$Println] Println ( expression )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:465:38: ^( FUNC_CALL[$Println] Println ( expression )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Println110), root_1);
						adaptor.addChild(root_1, stream_Println.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:465:68: ( expression )?
						if ( 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 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:466:6: Print '(' expression ')'
					{
					Print114=(Token)match(input,Print,FOLLOW_Print_in_functionCall1466); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Print.add(Print114);

					char_literal115=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1468); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal115);

					pushFollow(FOLLOW_expression_in_functionCall1470);
					expression116=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression116.getTree());
					char_literal117=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1472); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal117);

					// AST REWRITE
					// elements: Print, 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 = (Object)adaptor.nil();
					// 466:35: -> ^( FUNC_CALL[$Print] Print expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:466:38: ^( FUNC_CALL[$Print] Print expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Print114), root_1);
						adaptor.addChild(root_1, stream_Print.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:467:6: Size '(' expression ')'
					{
					Size118=(Token)match(input,Size,FOLLOW_Size_in_functionCall1494); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Size.add(Size118);

					char_literal119=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1496); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal119);

					pushFollow(FOLLOW_expression_in_functionCall1498);
					expression120=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression120.getTree());
					char_literal121=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1500); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal121);

					// AST REWRITE
					// elements: expression, Size
					// 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 = (Object)adaptor.nil();
					// 467:35: -> ^( FUNC_CALL[$Size] Size expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:467:38: ^( FUNC_CALL[$Size] Size expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Size118), root_1);
						adaptor.addChild(root_1, stream_Size.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:468:6: Keys '(' expression ')'
					{
					Keys122=(Token)match(input,Keys,FOLLOW_Keys_in_functionCall1523); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Keys.add(Keys122);

					char_literal123=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1525); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal123);

					pushFollow(FOLLOW_expression_in_functionCall1527);
					expression124=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression124.getTree());
					char_literal125=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1529); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal125);

					// AST REWRITE
					// elements: Keys, 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 = (Object)adaptor.nil();
					// 468:35: -> ^( FUNC_CALL[$Keys] Keys expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:468:38: ^( FUNC_CALL[$Keys] Keys expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Keys122), root_1);
						adaptor.addChild(root_1, stream_Keys.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:469:6: Sort '(' arg= expression ',' asc= expression ')'
					{
					Sort126=(Token)match(input,Sort,FOLLOW_Sort_in_functionCall1552); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Sort.add(Sort126);

					char_literal127=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1554); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal127);

					pushFollow(FOLLOW_expression_in_functionCall1558);
					arg=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(arg.getTree());
					char_literal128=(Token)match(input,Comma,FOLLOW_Comma_in_functionCall1560); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal128);

					pushFollow(FOLLOW_expression_in_functionCall1564);
					asc=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(asc.getTree());
					char_literal129=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1566); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal129);

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

					root_0 = (Object)adaptor.nil();
					// 469:58: -> ^( FUNC_CALL[$Sort] Sort $arg $asc)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:469:61: ^( FUNC_CALL[$Sort] Sort $arg $asc)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Sort126), root_1);
						adaptor.addChild(root_1, stream_Sort.nextNode());
						adaptor.addChild(root_1, stream_arg.nextTree());
						adaptor.addChild(root_1, stream_asc.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:470:6: Collate '(' arg= expression ',' locale= expression ')'
					{
					Collate130=(Token)match(input,Collate,FOLLOW_Collate_in_functionCall1593); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Collate.add(Collate130);

					char_literal131=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1595); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal131);

					pushFollow(FOLLOW_expression_in_functionCall1599);
					arg=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(arg.getTree());
					char_literal132=(Token)match(input,Comma,FOLLOW_Comma_in_functionCall1601); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal132);

					pushFollow(FOLLOW_expression_in_functionCall1605);
					locale=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(locale.getTree());
					char_literal133=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1607); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal133);

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

					root_0 = (Object)adaptor.nil();
					// 470:61: -> ^( FUNC_CALL[$Collate] Collate $arg $locale)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:470:64: ^( FUNC_CALL[$Collate] Collate $arg $locale)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Collate130), root_1);
						adaptor.addChild(root_1, stream_Collate.nextNode());
						adaptor.addChild(root_1, stream_arg.nextTree());
						adaptor.addChild(root_1, stream_locale.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:471:6: Date '(' ( exprList )? ')'
					{
					Date134=(Token)match(input,Date,FOLLOW_Date_in_functionCall1631); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Date.add(Date134);

					char_literal135=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1633); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal135);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:471:15: ( exprList )?
					int alt17=2;
					int LA17_0 = input.LA(1);
					if ( (LA17_0==All||(LA17_0 >= Any && LA17_0 <= Archive)||LA17_0==Assert||(LA17_0 >= AsyncCall && LA17_0 <= AsyncCallScript)||(LA17_0 >= AsyncStatus && LA17_0 <= B64Decompress)||LA17_0==Bool||(LA17_0 >= Call && LA17_0 <= Capabilities)||LA17_0==Cast||(LA17_0 >= Chain && LA17_0 <= Collate)||LA17_0==Copy||(LA17_0 >= Date && LA17_0 <= Debug)||(LA17_0 >= Defined && LA17_0 <= Difference)||LA17_0==DottedIdentifier||LA17_0==DropWhile||(LA17_0 >= Evals && LA17_0 <= Excl)||(LA17_0 >= File && LA17_0 <= Fold)||(LA17_0 >= Format && LA17_0 <= FromJson)||(LA17_0 >= GenSchema && LA17_0 <= HasCapability)||LA17_0==Identifier||LA17_0==Integer||(LA17_0 >= IsFile && LA17_0 <= IsFolder)||(LA17_0 >= Join && LA17_0 <= Json)||(LA17_0 >= KernelIdentifier && LA17_0 <= Keys)||(LA17_0 >= Lib && LA17_0 <= Long)||LA17_0==MD5||LA17_0==MapFn||(LA17_0 >= Matches && LA17_0 <= MkDir)||(LA17_0 >= New && LA17_0 <= OParen)||LA17_0==PackageIdentifier||LA17_0==Port||(LA17_0 >= Print && LA17_0 <= PropertyPlaceholder)||LA17_0==PutCache||LA17_0==QuotedString||(LA17_0 >= RPull && LA17_0 <= Replace)||LA17_0==Round||LA17_0==Signal||(LA17_0 >= Size && LA17_0 <= Sort)||(LA17_0 >= Spawn && LA17_0 <= String)||(LA17_0 >= Subtract && LA17_0 <= SuspendWait)||(LA17_0 >= TakeWhile && LA17_0 <= Template)||(LA17_0 >= Time && LA17_0 <= Timer)||LA17_0==Transpose||LA17_0==TypeOf||LA17_0==Unique||(LA17_0 >= UrlDecode && LA17_0 <= UrlEncode)||(LA17_0 >= Uuid && LA17_0 <= Wait)) ) {
						alt17=1;
					}
					switch (alt17) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:471:15: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1635);
							exprList136=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList136.getTree());
							}
							break;

					}

					char_literal137=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1638); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal137);

					// AST REWRITE
					// elements: exprList, Date
					// 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 = (Object)adaptor.nil();
					// 471:35: -> ^( FUNC_CALL[$Date] Date ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:471:38: ^( FUNC_CALL[$Date] Date ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Date134), root_1);
						adaptor.addChild(root_1, stream_Date.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:471:62: ( exprList )?
						if ( stream_exprList.hasNext() ) {
							adaptor.addChild(root_1, stream_exprList.nextTree());
						}
						stream_exprList.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:472:6: Time '(' ( expression )? ')'
					{
					Time138=(Token)match(input,Time,FOLLOW_Time_in_functionCall1663); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Time.add(Time138);

					char_literal139=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1665); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal139);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:472:15: ( expression )?
					int alt18=2;
					int LA18_0 = input.LA(1);
					if ( (LA18_0==All||(LA18_0 >= Any && LA18_0 <= Archive)||LA18_0==Assert||(LA18_0 >= AsyncCall && LA18_0 <= AsyncCallScript)||(LA18_0 >= AsyncStatus && LA18_0 <= B64Decompress)||LA18_0==Bool||(LA18_0 >= Call && LA18_0 <= Capabilities)||LA18_0==Cast||(LA18_0 >= Chain && LA18_0 <= Collate)||LA18_0==Copy||(LA18_0 >= Date && LA18_0 <= Debug)||(LA18_0 >= Defined && LA18_0 <= Difference)||LA18_0==DottedIdentifier||LA18_0==DropWhile||(LA18_0 >= Evals && LA18_0 <= Excl)||(LA18_0 >= File && LA18_0 <= Fold)||(LA18_0 >= Format && LA18_0 <= FromJson)||(LA18_0 >= GenSchema && LA18_0 <= HasCapability)||LA18_0==Identifier||LA18_0==Integer||(LA18_0 >= IsFile && LA18_0 <= IsFolder)||(LA18_0 >= Join && LA18_0 <= Json)||(LA18_0 >= KernelIdentifier && LA18_0 <= Keys)||(LA18_0 >= Lib && LA18_0 <= Long)||LA18_0==MD5||LA18_0==MapFn||(LA18_0 >= Matches && LA18_0 <= MkDir)||(LA18_0 >= New && LA18_0 <= OParen)||LA18_0==PackageIdentifier||LA18_0==Port||(LA18_0 >= Print && LA18_0 <= PropertyPlaceholder)||LA18_0==PutCache||LA18_0==QuotedString||(LA18_0 >= RPull && LA18_0 <= Replace)||LA18_0==Round||LA18_0==Signal||(LA18_0 >= Size && LA18_0 <= Sort)||(LA18_0 >= Spawn && LA18_0 <= String)||(LA18_0 >= Subtract && LA18_0 <= SuspendWait)||(LA18_0 >= TakeWhile && LA18_0 <= Template)||(LA18_0 >= Time && LA18_0 <= Timer)||LA18_0==Transpose||LA18_0==TypeOf||LA18_0==Unique||(LA18_0 >= UrlDecode && LA18_0 <= UrlEncode)||(LA18_0 >= Uuid && LA18_0 <= Wait)) ) {
						alt18=1;
					}
					switch (alt18) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:472:15: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1667);
							expression140=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression140.getTree());
							}
							break;

					}

					char_literal141=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1670); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal141);

					// AST REWRITE
					// elements: expression, Time
					// 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 = (Object)adaptor.nil();
					// 472:35: -> ^( FUNC_CALL[$Time] Time ( expression )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:472:38: ^( FUNC_CALL[$Time] Time ( expression )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Time138), root_1);
						adaptor.addChild(root_1, stream_Time.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:472:62: ( expression )?
						if ( 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 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:473:6: GetLine '(' ( expression )? ')'
					{
					GetLine142=(Token)match(input,GetLine,FOLLOW_GetLine_in_functionCall1693); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GetLine.add(GetLine142);

					char_literal143=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1695); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal143);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:473:18: ( expression )?
					int alt19=2;
					int LA19_0 = input.LA(1);
					if ( (LA19_0==All||(LA19_0 >= Any && LA19_0 <= Archive)||LA19_0==Assert||(LA19_0 >= AsyncCall && LA19_0 <= AsyncCallScript)||(LA19_0 >= AsyncStatus && LA19_0 <= B64Decompress)||LA19_0==Bool||(LA19_0 >= Call && LA19_0 <= Capabilities)||LA19_0==Cast||(LA19_0 >= Chain && LA19_0 <= Collate)||LA19_0==Copy||(LA19_0 >= Date && LA19_0 <= Debug)||(LA19_0 >= Defined && LA19_0 <= Difference)||LA19_0==DottedIdentifier||LA19_0==DropWhile||(LA19_0 >= Evals && LA19_0 <= Excl)||(LA19_0 >= File && LA19_0 <= Fold)||(LA19_0 >= Format && LA19_0 <= FromJson)||(LA19_0 >= GenSchema && LA19_0 <= HasCapability)||LA19_0==Identifier||LA19_0==Integer||(LA19_0 >= IsFile && LA19_0 <= IsFolder)||(LA19_0 >= Join && LA19_0 <= Json)||(LA19_0 >= KernelIdentifier && LA19_0 <= Keys)||(LA19_0 >= Lib && LA19_0 <= Long)||LA19_0==MD5||LA19_0==MapFn||(LA19_0 >= Matches && LA19_0 <= MkDir)||(LA19_0 >= New && LA19_0 <= OParen)||LA19_0==PackageIdentifier||LA19_0==Port||(LA19_0 >= Print && LA19_0 <= PropertyPlaceholder)||LA19_0==PutCache||LA19_0==QuotedString||(LA19_0 >= RPull && LA19_0 <= Replace)||LA19_0==Round||LA19_0==Signal||(LA19_0 >= Size && LA19_0 <= Sort)||(LA19_0 >= Spawn && LA19_0 <= String)||(LA19_0 >= Subtract && LA19_0 <= SuspendWait)||(LA19_0 >= TakeWhile && LA19_0 <= Template)||(LA19_0 >= Time && LA19_0 <= Timer)||LA19_0==Transpose||LA19_0==TypeOf||LA19_0==Unique||(LA19_0 >= UrlDecode && LA19_0 <= UrlEncode)||(LA19_0 >= Uuid && LA19_0 <= Wait)) ) {
						alt19=1;
					}
					switch (alt19) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:473:18: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1697);
							expression144=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression144.getTree());
							}
							break;

					}

					char_literal145=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1700); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal145);

					// AST REWRITE
					// elements: GetLine, 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 = (Object)adaptor.nil();
					// 473:35: -> ^( FUNC_CALL[$GetLine] GetLine ( expression )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:473:38: ^( FUNC_CALL[$GetLine] GetLine ( expression )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GetLine142), root_1);
						adaptor.addChild(root_1, stream_GetLine.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:473:68: ( expression )?
						if ( 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 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:6: GetCh '(' ( expression )? ')'
					{
					GetCh146=(Token)match(input,GetCh,FOLLOW_GetCh_in_functionCall1720); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GetCh.add(GetCh146);

					char_literal147=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1722); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal147);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:16: ( expression )?
					int alt20=2;
					int LA20_0 = input.LA(1);
					if ( (LA20_0==All||(LA20_0 >= Any && LA20_0 <= Archive)||LA20_0==Assert||(LA20_0 >= AsyncCall && LA20_0 <= AsyncCallScript)||(LA20_0 >= AsyncStatus && LA20_0 <= B64Decompress)||LA20_0==Bool||(LA20_0 >= Call && LA20_0 <= Capabilities)||LA20_0==Cast||(LA20_0 >= Chain && LA20_0 <= Collate)||LA20_0==Copy||(LA20_0 >= Date && LA20_0 <= Debug)||(LA20_0 >= Defined && LA20_0 <= Difference)||LA20_0==DottedIdentifier||LA20_0==DropWhile||(LA20_0 >= Evals && LA20_0 <= Excl)||(LA20_0 >= File && LA20_0 <= Fold)||(LA20_0 >= Format && LA20_0 <= FromJson)||(LA20_0 >= GenSchema && LA20_0 <= HasCapability)||LA20_0==Identifier||LA20_0==Integer||(LA20_0 >= IsFile && LA20_0 <= IsFolder)||(LA20_0 >= Join && LA20_0 <= Json)||(LA20_0 >= KernelIdentifier && LA20_0 <= Keys)||(LA20_0 >= Lib && LA20_0 <= Long)||LA20_0==MD5||LA20_0==MapFn||(LA20_0 >= Matches && LA20_0 <= MkDir)||(LA20_0 >= New && LA20_0 <= OParen)||LA20_0==PackageIdentifier||LA20_0==Port||(LA20_0 >= Print && LA20_0 <= PropertyPlaceholder)||LA20_0==PutCache||LA20_0==QuotedString||(LA20_0 >= RPull && LA20_0 <= Replace)||LA20_0==Round||LA20_0==Signal||(LA20_0 >= Size && LA20_0 <= Sort)||(LA20_0 >= Spawn && LA20_0 <= String)||(LA20_0 >= Subtract && LA20_0 <= SuspendWait)||(LA20_0 >= TakeWhile && LA20_0 <= Template)||(LA20_0 >= Time && LA20_0 <= Timer)||LA20_0==Transpose||LA20_0==TypeOf||LA20_0==Unique||(LA20_0 >= UrlDecode && LA20_0 <= UrlEncode)||(LA20_0 >= Uuid && LA20_0 <= Wait)) ) {
						alt20=1;
					}
					switch (alt20) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:16: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1724);
							expression148=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression148.getTree());
							}
							break;

					}

					char_literal149=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1727); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal149);

					// AST REWRITE
					// elements: expression, GetCh
					// 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 = (Object)adaptor.nil();
					// 474:35: -> ^( FUNC_CALL[$GetCh] GetCh ( expression )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:38: ^( FUNC_CALL[$GetCh] GetCh ( expression )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GetCh146), root_1);
						adaptor.addChild(root_1, stream_GetCh.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:64: ( expression )?
						if ( 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 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:475:6: Capabilities '(' ')'
					{
					Capabilities150=(Token)match(input,Capabilities,FOLLOW_Capabilities_in_functionCall1749); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Capabilities.add(Capabilities150);

					char_literal151=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1751); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal151);

					char_literal152=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1753); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal152);

					// AST REWRITE
					// elements: Capabilities
					// 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 = (Object)adaptor.nil();
					// 475:31: -> ^( FUNC_CALL[$Capabilities] Capabilities )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:475:34: ^( FUNC_CALL[$Capabilities] Capabilities )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Capabilities150), root_1);
						adaptor.addChild(root_1, stream_Capabilities.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:476:6: HasCapability '(' expression ')'
					{
					HasCapability153=(Token)match(input,HasCapability,FOLLOW_HasCapability_in_functionCall1773); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_HasCapability.add(HasCapability153);

					char_literal154=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1775); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal154);

					pushFollow(FOLLOW_expression_in_functionCall1777);
					expression155=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression155.getTree());
					char_literal156=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1779); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal156);

					// AST REWRITE
					// elements: HasCapability, 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 = (Object)adaptor.nil();
					// 476:39: -> ^( FUNC_CALL[$HasCapability] HasCapability expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:476:42: ^( FUNC_CALL[$HasCapability] HasCapability expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, HasCapability153), root_1);
						adaptor.addChild(root_1, stream_HasCapability.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:477:6: Cast '(' a= expression ',' b= expression ')'
					{
					Cast157=(Token)match(input,Cast,FOLLOW_Cast_in_functionCall1797); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Cast.add(Cast157);

					char_literal158=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1800); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal158);

					pushFollow(FOLLOW_expression_in_functionCall1804);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal159=(Token)match(input,Comma,FOLLOW_Comma_in_functionCall1806); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal159);

					pushFollow(FOLLOW_expression_in_functionCall1810);
					b=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(b.getTree());
					char_literal160=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1812); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal160);

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

					root_0 = (Object)adaptor.nil();
					// 477:53: -> ^( FUNC_CALL[$Cast] Cast $a $b)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:477:56: ^( FUNC_CALL[$Cast] Cast $a $b)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Cast157), root_1);
						adaptor.addChild(root_1, stream_Cast.nextNode());
						adaptor.addChild(root_1, stream_a.nextTree());
						adaptor.addChild(root_1, stream_b.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:478:6: Identifier '(' ( exprList )? ')'
					{
					Identifier161=(Token)match(input,Identifier,FOLLOW_Identifier_in_functionCall1837); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier161);

					char_literal162=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1839); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal162);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:478:21: ( exprList )?
					int alt21=2;
					int LA21_0 = input.LA(1);
					if ( (LA21_0==All||(LA21_0 >= Any && LA21_0 <= Archive)||LA21_0==Assert||(LA21_0 >= AsyncCall && LA21_0 <= AsyncCallScript)||(LA21_0 >= AsyncStatus && LA21_0 <= B64Decompress)||LA21_0==Bool||(LA21_0 >= Call && LA21_0 <= Capabilities)||LA21_0==Cast||(LA21_0 >= Chain && LA21_0 <= Collate)||LA21_0==Copy||(LA21_0 >= Date && LA21_0 <= Debug)||(LA21_0 >= Defined && LA21_0 <= Difference)||LA21_0==DottedIdentifier||LA21_0==DropWhile||(LA21_0 >= Evals && LA21_0 <= Excl)||(LA21_0 >= File && LA21_0 <= Fold)||(LA21_0 >= Format && LA21_0 <= FromJson)||(LA21_0 >= GenSchema && LA21_0 <= HasCapability)||LA21_0==Identifier||LA21_0==Integer||(LA21_0 >= IsFile && LA21_0 <= IsFolder)||(LA21_0 >= Join && LA21_0 <= Json)||(LA21_0 >= KernelIdentifier && LA21_0 <= Keys)||(LA21_0 >= Lib && LA21_0 <= Long)||LA21_0==MD5||LA21_0==MapFn||(LA21_0 >= Matches && LA21_0 <= MkDir)||(LA21_0 >= New && LA21_0 <= OParen)||LA21_0==PackageIdentifier||LA21_0==Port||(LA21_0 >= Print && LA21_0 <= PropertyPlaceholder)||LA21_0==PutCache||LA21_0==QuotedString||(LA21_0 >= RPull && LA21_0 <= Replace)||LA21_0==Round||LA21_0==Signal||(LA21_0 >= Size && LA21_0 <= Sort)||(LA21_0 >= Spawn && LA21_0 <= String)||(LA21_0 >= Subtract && LA21_0 <= SuspendWait)||(LA21_0 >= TakeWhile && LA21_0 <= Template)||(LA21_0 >= Time && LA21_0 <= Timer)||LA21_0==Transpose||LA21_0==TypeOf||LA21_0==Unique||(LA21_0 >= UrlDecode && LA21_0 <= UrlEncode)||(LA21_0 >= Uuid && LA21_0 <= Wait)) ) {
						alt21=1;
					}
					switch (alt21) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:478:21: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1841);
							exprList163=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList163.getTree());
							}
							break;

					}

					char_literal164=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1844); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal164);

					// AST REWRITE
					// elements: Identifier, exprList
					// 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 = (Object)adaptor.nil();
					// 478:35: -> ^( FUNC_CALL[$Identifier] Identifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:478:38: ^( FUNC_CALL[$Identifier] Identifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Identifier161), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:478:74: ( exprList )?
						if ( stream_exprList.hasNext() ) {
							adaptor.addChild(root_1, stream_exprList.nextTree());
						}
						stream_exprList.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:479:6: DottedIdentifier '(' ( exprList )? ')'
					{
					DottedIdentifier165=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_functionCall1863); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DottedIdentifier.add(DottedIdentifier165);

					char_literal166=(Token)match(input,OParen,FOLLOW_OParen_in_functionCall1865); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal166);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:479:27: ( exprList )?
					int alt22=2;
					int LA22_0 = input.LA(1);
					if ( (LA22_0==All||(LA22_0 >= Any && LA22_0 <= Archive)||LA22_0==Assert||(LA22_0 >= AsyncCall && LA22_0 <= AsyncCallScript)||(LA22_0 >= AsyncStatus && LA22_0 <= B64Decompress)||LA22_0==Bool||(LA22_0 >= Call && LA22_0 <= Capabilities)||LA22_0==Cast||(LA22_0 >= Chain && LA22_0 <= Collate)||LA22_0==Copy||(LA22_0 >= Date && LA22_0 <= Debug)||(LA22_0 >= Defined && LA22_0 <= Difference)||LA22_0==DottedIdentifier||LA22_0==DropWhile||(LA22_0 >= Evals && LA22_0 <= Excl)||(LA22_0 >= File && LA22_0 <= Fold)||(LA22_0 >= Format && LA22_0 <= FromJson)||(LA22_0 >= GenSchema && LA22_0 <= HasCapability)||LA22_0==Identifier||LA22_0==Integer||(LA22_0 >= IsFile && LA22_0 <= IsFolder)||(LA22_0 >= Join && LA22_0 <= Json)||(LA22_0 >= KernelIdentifier && LA22_0 <= Keys)||(LA22_0 >= Lib && LA22_0 <= Long)||LA22_0==MD5||LA22_0==MapFn||(LA22_0 >= Matches && LA22_0 <= MkDir)||(LA22_0 >= New && LA22_0 <= OParen)||LA22_0==PackageIdentifier||LA22_0==Port||(LA22_0 >= Print && LA22_0 <= PropertyPlaceholder)||LA22_0==PutCache||LA22_0==QuotedString||(LA22_0 >= RPull && LA22_0 <= Replace)||LA22_0==Round||LA22_0==Signal||(LA22_0 >= Size && LA22_0 <= Sort)||(LA22_0 >= Spawn && LA22_0 <= String)||(LA22_0 >= Subtract && LA22_0 <= SuspendWait)||(LA22_0 >= TakeWhile && LA22_0 <= Template)||(LA22_0 >= Time && LA22_0 <= Timer)||LA22_0==Transpose||LA22_0==TypeOf||LA22_0==Unique||(LA22_0 >= UrlDecode && LA22_0 <= UrlEncode)||(LA22_0 >= Uuid && LA22_0 <= Wait)) ) {
						alt22=1;
					}
					switch (alt22) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:479:27: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1867);
							exprList167=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList167.getTree());
							}
							break;

					}

					char_literal168=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1870); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal168);

					// AST REWRITE
					// elements: exprList, DottedIdentifier
					// 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 = (Object)adaptor.nil();
					// 480:35: -> ^( DottedIdentifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:480:38: ^( DottedIdentifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(token("QUALIFIED_FUNC_CALL", QUALIFIED_FUNC_CALL, DottedIdentifier165.getLine()), root_1);
						adaptor.addChild(root_1, stream_DottedIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:480:138: ( exprList )?
						if ( stream_exprList.hasNext() ) {
							adaptor.addChild(root_1, stream_exprList.nextTree());
						}
						stream_exprList.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:481:5: func2
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_func2_in_functionCall1921);
					func2169=func2();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, func2169.getTree());

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "functionCall"


	public static class func2_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "func2"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:484:1: func2 : ( TypeOf '(' expression ')' -> ^( FUNC_CALL[$TypeOf] TypeOf expression ) | Assert '(' exp= expression ')' -> ^( FUNC_CALL[$Assert] Assert $exp $exp) | Assert '(' msg= expression ',' exp= expression ')' -> ^( FUNC_CALL[$Assert] Assert $msg $exp) | Replace '(' v= expression ',' s= expression ',' t= expression ')' -> ^( FUNC_CALL[$Replace] Replace $v $s $t) | RPull '(' u= expression ')' -> ^( FUNC_CALL[$RPull] RPull $u) | RPush '(' u= expression ',' v= expression ( ',' o= expression )? ')' -> ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? ) | Transpose '(' expression ')' -> ^( FUNC_CALL[$Transpose] Transpose expression ) | B64Compress '(' expression ')' -> ^( FUNC_CALL[$B64Compress] B64Compress expression ) | B64Decompress '(' expression ')' -> ^( FUNC_CALL[$B64Decompress] B64Decompress expression ) | Debug '(' expression ')' -> ^( FUNC_CALL[$Debug] Debug expression ) | Evals '(' expression ')' -> ^( FUNC_CALL[$Evals] Evals expression ) | ReadDir '(' expression ')' -> ^( FUNC_CALL[$ReadDir] ReadDir expression ) | MkDir '(' expression ')' -> ^( FUNC_CALL[$MkDir] MkDir expression ) | IsFile '(' expression ')' -> ^( FUNC_CALL[$IsFile] IsFile expression ) | IsFolder '(' expression ')' -> ^( FUNC_CALL[$IsFolder] IsFolder expression ) | File '(' exprList ')' -> ^( FUNC_CALL[$File] File exprList ) | Delete '(' expression ')' -> ^( FUNC_CALL[$Delete] Delete expression ) | Archive '(' expression ')' -> ^( FUNC_CALL[$Archive] Archive expression ) | Port '(' expression ')' -> ^( FUNC_CALL[$Port] Port expression ) | Suspend '(' expression ')' -> ^( FUNC_CALL[$Suspend] Suspend expression ) | Difference '(' exprList ')' -> ^( FUNC_CALL[$Difference] Difference exprList ) | Remove '(' Identifier ',' k= expression ')' -> ^( FUNC_CALL[$Remove] Remove Identifier $k) | Join '(' exprList ')' -> ^( FUNC_CALL[$Join] Join exprList ) | Unique '(' exprList ')' -> ^( FUNC_CALL[$Unique] Unique exprList ) | Copy '(' s= expression ',' t= expression ')' -> ^( FUNC_CALL[$Copy] Copy $s $t) | Close '(' expression ')' -> ^( FUNC_CALL[$Close] Close expression ) | Timer '(' ( expression )? ')' -> ^( FUNC_CALL[$Timer] Timer ( expression )? ) | Vars '(' ')' -> ^( FUNC_CALL[$Vars] Vars ) | MergeIf '(' exprList ')' -> ^( FUNC_CALL[$MergeIf] MergeIf exprList ) | Format '(' exprList ')' -> ^( FUNC_CALL[$Format] Format exprList ) | Merge '(' exprList ')' -> ^( FUNC_CALL[$Merge] Merge exprList ) | Message '(' a= expression ',' m= expression ')' -> ^( FUNC_CALL[$Message] Message $a $m) | PutCache '(' v= expression ',' n= expression ( ',' exp= expression )? ')' -> ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? ) | GetCache '(' n= expression ')' -> ^( FUNC_CALL[$GetCache] GetCache $n) | Json '(' expression ')' -> ^( FUNC_CALL[$Json] Json expression ) | FromJson '(' expression ')' -> ^( FUNC_CALL[$FromJson] FromJson expression ) | UrlEncode '(' expression ')' -> ^( FUNC_CALL[$UrlEncode] UrlEncode expression ) | UrlDecode '(' expression ')' -> ^( FUNC_CALL[$UrlDecode] UrlDecode expression ) | MD5 '(' expression ')' -> ^( FUNC_CALL[$MD5] MD5 expression ) | MapFn '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$MapFn] MapFn Identifier expression ) | FilterFn '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression ) | Fold '(' Identifier ',' expression ',' expression ')' -> ^( FUNC_CALL[$Fold] Fold Identifier expression expression ) | Any '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$Any] Any Identifier expression ) | All '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$All] All Identifier expression ) | TakeWhile '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression ) | DropWhile '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression ) | SplitWith '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression ) | Split '(' str= expression ',' sep= expression ',' quoter= expression ')' -> ^( FUNC_CALL[$Split] Split $str $sep $quoter) | Uuid '(' ')' -> ^( FUNC_CALL[$Uuid] Uuid ) | AsyncCall '(' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? ) | AsyncCallScript '(' r= expression ',' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? ) | AsyncStatus '(' expression ')' -> ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression ) | SuspendWait '(' exprList ')' -> ^( FUNC_CALL[$SuspendWait] SuspendWait exprList ) | Wait '(' d= expression ( ',' in= expression ',' re= expression )? ')' -> ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? ) | Chain '(' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$Chain] Chain $s ( $p)? ) | Signal '(' d= expression ',' v= expression ')' -> ^( FUNC_CALL[$Signal] Signal $d $v) | Sleep '(' expression ')' -> ^( FUNC_CALL[$Sleep] Sleep expression ) | Matches '(' s= expression ',' r= expression ')' -> ^( FUNC_CALL[$Matches] Matches $s $r) | Rand '(' expression ')' -> ^( FUNC_CALL[$Rand] Rand expression ) | Spawn '(' p= expression ( ',' ex= expression ',' f= expression )? ')' -> ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? ) | Defined '(' Identifier ')' -> ^( FUNC_CALL[$Defined] Defined Identifier ) | Defined '(' lookup ')' -> ^( FUNC_CALL[$Defined] Defined lookup ) | Round '(' v= expression ( ',' dp= expression )? ')' -> ^( FUNC_CALL[$Round] Round $v ( $dp)? ) | Lib '(' expression ')' -> ^( FUNC_CALL[$Lib] Lib expression ) | Call '(' a= expression ',' b= expression ',' c= expression ')' -> ^( FUNC_CALL[$Call] Call $a $b $c) | New '(' a= expression ')' -> ^( FUNC_CALL[$New] New $a) | GenSchema '(' a= expression ')' -> ^( FUNC_CALL[$GenSchema] GenSchema $a) | GenStruct '(' Identifier ',' b= expression ')' -> ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b) | Template '(' t= expression ',' p= expression ')' -> ^( FUNC_CALL[$Template] Template $t $p) | KernelIdentifier '(' ( exprList )? ')' -> ^( KernelIdentifier ( exprList )? ) );
	public final ReflexParser.func2_return func2() throws RecognitionException {
		ReflexParser.func2_return retval = new ReflexParser.func2_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token TypeOf170=null;
		Token char_literal171=null;
		Token char_literal173=null;
		Token Assert174=null;
		Token char_literal175=null;
		Token char_literal176=null;
		Token Assert177=null;
		Token char_literal178=null;
		Token char_literal179=null;
		Token char_literal180=null;
		Token Replace181=null;
		Token char_literal182=null;
		Token char_literal183=null;
		Token char_literal184=null;
		Token char_literal185=null;
		Token RPull186=null;
		Token char_literal187=null;
		Token char_literal188=null;
		Token RPush189=null;
		Token char_literal190=null;
		Token char_literal191=null;
		Token char_literal192=null;
		Token char_literal193=null;
		Token Transpose194=null;
		Token char_literal195=null;
		Token char_literal197=null;
		Token B64Compress198=null;
		Token char_literal199=null;
		Token char_literal201=null;
		Token B64Decompress202=null;
		Token char_literal203=null;
		Token char_literal205=null;
		Token Debug206=null;
		Token char_literal207=null;
		Token char_literal209=null;
		Token Evals210=null;
		Token char_literal211=null;
		Token char_literal213=null;
		Token ReadDir214=null;
		Token char_literal215=null;
		Token char_literal217=null;
		Token MkDir218=null;
		Token char_literal219=null;
		Token char_literal221=null;
		Token IsFile222=null;
		Token char_literal223=null;
		Token char_literal225=null;
		Token IsFolder226=null;
		Token char_literal227=null;
		Token char_literal229=null;
		Token File230=null;
		Token char_literal231=null;
		Token char_literal233=null;
		Token Delete234=null;
		Token char_literal235=null;
		Token char_literal237=null;
		Token Archive238=null;
		Token char_literal239=null;
		Token char_literal241=null;
		Token Port242=null;
		Token char_literal243=null;
		Token char_literal245=null;
		Token Suspend246=null;
		Token char_literal247=null;
		Token char_literal249=null;
		Token Difference250=null;
		Token char_literal251=null;
		Token char_literal253=null;
		Token Remove254=null;
		Token char_literal255=null;
		Token Identifier256=null;
		Token char_literal257=null;
		Token char_literal258=null;
		Token Join259=null;
		Token char_literal260=null;
		Token char_literal262=null;
		Token Unique263=null;
		Token char_literal264=null;
		Token char_literal266=null;
		Token Copy267=null;
		Token char_literal268=null;
		Token char_literal269=null;
		Token char_literal270=null;
		Token Close271=null;
		Token char_literal272=null;
		Token char_literal274=null;
		Token Timer275=null;
		Token char_literal276=null;
		Token char_literal278=null;
		Token Vars279=null;
		Token char_literal280=null;
		Token char_literal281=null;
		Token MergeIf282=null;
		Token char_literal283=null;
		Token char_literal285=null;
		Token Format286=null;
		Token char_literal287=null;
		Token char_literal289=null;
		Token Merge290=null;
		Token char_literal291=null;
		Token char_literal293=null;
		Token Message294=null;
		Token char_literal295=null;
		Token char_literal296=null;
		Token char_literal297=null;
		Token PutCache298=null;
		Token char_literal299=null;
		Token char_literal300=null;
		Token char_literal301=null;
		Token char_literal302=null;
		Token GetCache303=null;
		Token char_literal304=null;
		Token char_literal305=null;
		Token Json306=null;
		Token char_literal307=null;
		Token char_literal309=null;
		Token FromJson310=null;
		Token char_literal311=null;
		Token char_literal313=null;
		Token UrlEncode314=null;
		Token char_literal315=null;
		Token char_literal317=null;
		Token UrlDecode318=null;
		Token char_literal319=null;
		Token char_literal321=null;
		Token MD5322=null;
		Token char_literal323=null;
		Token char_literal325=null;
		Token MapFn326=null;
		Token char_literal327=null;
		Token Identifier328=null;
		Token char_literal329=null;
		Token char_literal331=null;
		Token FilterFn332=null;
		Token char_literal333=null;
		Token Identifier334=null;
		Token char_literal335=null;
		Token char_literal337=null;
		Token Fold338=null;
		Token char_literal339=null;
		Token Identifier340=null;
		Token char_literal341=null;
		Token char_literal343=null;
		Token char_literal345=null;
		Token Any346=null;
		Token char_literal347=null;
		Token Identifier348=null;
		Token char_literal349=null;
		Token char_literal351=null;
		Token All352=null;
		Token char_literal353=null;
		Token Identifier354=null;
		Token char_literal355=null;
		Token char_literal357=null;
		Token TakeWhile358=null;
		Token char_literal359=null;
		Token Identifier360=null;
		Token char_literal361=null;
		Token char_literal363=null;
		Token DropWhile364=null;
		Token char_literal365=null;
		Token Identifier366=null;
		Token char_literal367=null;
		Token char_literal369=null;
		Token SplitWith370=null;
		Token char_literal371=null;
		Token Identifier372=null;
		Token char_literal373=null;
		Token char_literal375=null;
		Token Split376=null;
		Token char_literal377=null;
		Token char_literal378=null;
		Token char_literal379=null;
		Token char_literal380=null;
		Token Uuid381=null;
		Token char_literal382=null;
		Token char_literal383=null;
		Token AsyncCall384=null;
		Token char_literal385=null;
		Token char_literal386=null;
		Token char_literal387=null;
		Token AsyncCallScript388=null;
		Token char_literal389=null;
		Token char_literal390=null;
		Token char_literal391=null;
		Token char_literal392=null;
		Token AsyncStatus393=null;
		Token char_literal394=null;
		Token char_literal396=null;
		Token SuspendWait397=null;
		Token char_literal398=null;
		Token char_literal400=null;
		Token Wait401=null;
		Token char_literal402=null;
		Token char_literal403=null;
		Token char_literal404=null;
		Token char_literal405=null;
		Token Chain406=null;
		Token char_literal407=null;
		Token char_literal408=null;
		Token char_literal409=null;
		Token Signal410=null;
		Token char_literal411=null;
		Token char_literal412=null;
		Token char_literal413=null;
		Token Sleep414=null;
		Token char_literal415=null;
		Token char_literal417=null;
		Token Matches418=null;
		Token char_literal419=null;
		Token char_literal420=null;
		Token char_literal421=null;
		Token Rand422=null;
		Token char_literal423=null;
		Token char_literal425=null;
		Token Spawn426=null;
		Token char_literal427=null;
		Token char_literal428=null;
		Token char_literal429=null;
		Token char_literal430=null;
		Token Defined431=null;
		Token char_literal432=null;
		Token Identifier433=null;
		Token char_literal434=null;
		Token Defined435=null;
		Token char_literal436=null;
		Token char_literal438=null;
		Token Round439=null;
		Token char_literal440=null;
		Token char_literal441=null;
		Token char_literal442=null;
		Token Lib443=null;
		Token char_literal444=null;
		Token char_literal446=null;
		Token Call447=null;
		Token char_literal448=null;
		Token char_literal449=null;
		Token char_literal450=null;
		Token char_literal451=null;
		Token New452=null;
		Token char_literal453=null;
		Token char_literal454=null;
		Token GenSchema455=null;
		Token char_literal456=null;
		Token char_literal457=null;
		Token GenStruct458=null;
		Token char_literal459=null;
		Token Identifier460=null;
		Token char_literal461=null;
		Token char_literal462=null;
		Token Template463=null;
		Token char_literal464=null;
		Token char_literal465=null;
		Token char_literal466=null;
		Token KernelIdentifier467=null;
		Token char_literal468=null;
		Token char_literal470=null;
		ParserRuleReturnScope exp =null;
		ParserRuleReturnScope msg =null;
		ParserRuleReturnScope v =null;
		ParserRuleReturnScope s =null;
		ParserRuleReturnScope t =null;
		ParserRuleReturnScope u =null;
		ParserRuleReturnScope o =null;
		ParserRuleReturnScope k =null;
		ParserRuleReturnScope a =null;
		ParserRuleReturnScope m =null;
		ParserRuleReturnScope n =null;
		ParserRuleReturnScope str =null;
		ParserRuleReturnScope sep =null;
		ParserRuleReturnScope quoter =null;
		ParserRuleReturnScope p =null;
		ParserRuleReturnScope r =null;
		ParserRuleReturnScope d =null;
		ParserRuleReturnScope in =null;
		ParserRuleReturnScope re =null;
		ParserRuleReturnScope ex =null;
		ParserRuleReturnScope f =null;
		ParserRuleReturnScope dp =null;
		ParserRuleReturnScope b =null;
		ParserRuleReturnScope c =null;
		ParserRuleReturnScope expression172 =null;
		ParserRuleReturnScope expression196 =null;
		ParserRuleReturnScope expression200 =null;
		ParserRuleReturnScope expression204 =null;
		ParserRuleReturnScope expression208 =null;
		ParserRuleReturnScope expression212 =null;
		ParserRuleReturnScope expression216 =null;
		ParserRuleReturnScope expression220 =null;
		ParserRuleReturnScope expression224 =null;
		ParserRuleReturnScope expression228 =null;
		ParserRuleReturnScope exprList232 =null;
		ParserRuleReturnScope expression236 =null;
		ParserRuleReturnScope expression240 =null;
		ParserRuleReturnScope expression244 =null;
		ParserRuleReturnScope expression248 =null;
		ParserRuleReturnScope exprList252 =null;
		ParserRuleReturnScope exprList261 =null;
		ParserRuleReturnScope exprList265 =null;
		ParserRuleReturnScope expression273 =null;
		ParserRuleReturnScope expression277 =null;
		ParserRuleReturnScope exprList284 =null;
		ParserRuleReturnScope exprList288 =null;
		ParserRuleReturnScope exprList292 =null;
		ParserRuleReturnScope expression308 =null;
		ParserRuleReturnScope expression312 =null;
		ParserRuleReturnScope expression316 =null;
		ParserRuleReturnScope expression320 =null;
		ParserRuleReturnScope expression324 =null;
		ParserRuleReturnScope expression330 =null;
		ParserRuleReturnScope expression336 =null;
		ParserRuleReturnScope expression342 =null;
		ParserRuleReturnScope expression344 =null;
		ParserRuleReturnScope expression350 =null;
		ParserRuleReturnScope expression356 =null;
		ParserRuleReturnScope expression362 =null;
		ParserRuleReturnScope expression368 =null;
		ParserRuleReturnScope expression374 =null;
		ParserRuleReturnScope expression395 =null;
		ParserRuleReturnScope exprList399 =null;
		ParserRuleReturnScope expression416 =null;
		ParserRuleReturnScope expression424 =null;
		ParserRuleReturnScope lookup437 =null;
		ParserRuleReturnScope expression445 =null;
		ParserRuleReturnScope exprList469 =null;

		Object TypeOf170_tree=null;
		Object char_literal171_tree=null;
		Object char_literal173_tree=null;
		Object Assert174_tree=null;
		Object char_literal175_tree=null;
		Object char_literal176_tree=null;
		Object Assert177_tree=null;
		Object char_literal178_tree=null;
		Object char_literal179_tree=null;
		Object char_literal180_tree=null;
		Object Replace181_tree=null;
		Object char_literal182_tree=null;
		Object char_literal183_tree=null;
		Object char_literal184_tree=null;
		Object char_literal185_tree=null;
		Object RPull186_tree=null;
		Object char_literal187_tree=null;
		Object char_literal188_tree=null;
		Object RPush189_tree=null;
		Object char_literal190_tree=null;
		Object char_literal191_tree=null;
		Object char_literal192_tree=null;
		Object char_literal193_tree=null;
		Object Transpose194_tree=null;
		Object char_literal195_tree=null;
		Object char_literal197_tree=null;
		Object B64Compress198_tree=null;
		Object char_literal199_tree=null;
		Object char_literal201_tree=null;
		Object B64Decompress202_tree=null;
		Object char_literal203_tree=null;
		Object char_literal205_tree=null;
		Object Debug206_tree=null;
		Object char_literal207_tree=null;
		Object char_literal209_tree=null;
		Object Evals210_tree=null;
		Object char_literal211_tree=null;
		Object char_literal213_tree=null;
		Object ReadDir214_tree=null;
		Object char_literal215_tree=null;
		Object char_literal217_tree=null;
		Object MkDir218_tree=null;
		Object char_literal219_tree=null;
		Object char_literal221_tree=null;
		Object IsFile222_tree=null;
		Object char_literal223_tree=null;
		Object char_literal225_tree=null;
		Object IsFolder226_tree=null;
		Object char_literal227_tree=null;
		Object char_literal229_tree=null;
		Object File230_tree=null;
		Object char_literal231_tree=null;
		Object char_literal233_tree=null;
		Object Delete234_tree=null;
		Object char_literal235_tree=null;
		Object char_literal237_tree=null;
		Object Archive238_tree=null;
		Object char_literal239_tree=null;
		Object char_literal241_tree=null;
		Object Port242_tree=null;
		Object char_literal243_tree=null;
		Object char_literal245_tree=null;
		Object Suspend246_tree=null;
		Object char_literal247_tree=null;
		Object char_literal249_tree=null;
		Object Difference250_tree=null;
		Object char_literal251_tree=null;
		Object char_literal253_tree=null;
		Object Remove254_tree=null;
		Object char_literal255_tree=null;
		Object Identifier256_tree=null;
		Object char_literal257_tree=null;
		Object char_literal258_tree=null;
		Object Join259_tree=null;
		Object char_literal260_tree=null;
		Object char_literal262_tree=null;
		Object Unique263_tree=null;
		Object char_literal264_tree=null;
		Object char_literal266_tree=null;
		Object Copy267_tree=null;
		Object char_literal268_tree=null;
		Object char_literal269_tree=null;
		Object char_literal270_tree=null;
		Object Close271_tree=null;
		Object char_literal272_tree=null;
		Object char_literal274_tree=null;
		Object Timer275_tree=null;
		Object char_literal276_tree=null;
		Object char_literal278_tree=null;
		Object Vars279_tree=null;
		Object char_literal280_tree=null;
		Object char_literal281_tree=null;
		Object MergeIf282_tree=null;
		Object char_literal283_tree=null;
		Object char_literal285_tree=null;
		Object Format286_tree=null;
		Object char_literal287_tree=null;
		Object char_literal289_tree=null;
		Object Merge290_tree=null;
		Object char_literal291_tree=null;
		Object char_literal293_tree=null;
		Object Message294_tree=null;
		Object char_literal295_tree=null;
		Object char_literal296_tree=null;
		Object char_literal297_tree=null;
		Object PutCache298_tree=null;
		Object char_literal299_tree=null;
		Object char_literal300_tree=null;
		Object char_literal301_tree=null;
		Object char_literal302_tree=null;
		Object GetCache303_tree=null;
		Object char_literal304_tree=null;
		Object char_literal305_tree=null;
		Object Json306_tree=null;
		Object char_literal307_tree=null;
		Object char_literal309_tree=null;
		Object FromJson310_tree=null;
		Object char_literal311_tree=null;
		Object char_literal313_tree=null;
		Object UrlEncode314_tree=null;
		Object char_literal315_tree=null;
		Object char_literal317_tree=null;
		Object UrlDecode318_tree=null;
		Object char_literal319_tree=null;
		Object char_literal321_tree=null;
		Object MD5322_tree=null;
		Object char_literal323_tree=null;
		Object char_literal325_tree=null;
		Object MapFn326_tree=null;
		Object char_literal327_tree=null;
		Object Identifier328_tree=null;
		Object char_literal329_tree=null;
		Object char_literal331_tree=null;
		Object FilterFn332_tree=null;
		Object char_literal333_tree=null;
		Object Identifier334_tree=null;
		Object char_literal335_tree=null;
		Object char_literal337_tree=null;
		Object Fold338_tree=null;
		Object char_literal339_tree=null;
		Object Identifier340_tree=null;
		Object char_literal341_tree=null;
		Object char_literal343_tree=null;
		Object char_literal345_tree=null;
		Object Any346_tree=null;
		Object char_literal347_tree=null;
		Object Identifier348_tree=null;
		Object char_literal349_tree=null;
		Object char_literal351_tree=null;
		Object All352_tree=null;
		Object char_literal353_tree=null;
		Object Identifier354_tree=null;
		Object char_literal355_tree=null;
		Object char_literal357_tree=null;
		Object TakeWhile358_tree=null;
		Object char_literal359_tree=null;
		Object Identifier360_tree=null;
		Object char_literal361_tree=null;
		Object char_literal363_tree=null;
		Object DropWhile364_tree=null;
		Object char_literal365_tree=null;
		Object Identifier366_tree=null;
		Object char_literal367_tree=null;
		Object char_literal369_tree=null;
		Object SplitWith370_tree=null;
		Object char_literal371_tree=null;
		Object Identifier372_tree=null;
		Object char_literal373_tree=null;
		Object char_literal375_tree=null;
		Object Split376_tree=null;
		Object char_literal377_tree=null;
		Object char_literal378_tree=null;
		Object char_literal379_tree=null;
		Object char_literal380_tree=null;
		Object Uuid381_tree=null;
		Object char_literal382_tree=null;
		Object char_literal383_tree=null;
		Object AsyncCall384_tree=null;
		Object char_literal385_tree=null;
		Object char_literal386_tree=null;
		Object char_literal387_tree=null;
		Object AsyncCallScript388_tree=null;
		Object char_literal389_tree=null;
		Object char_literal390_tree=null;
		Object char_literal391_tree=null;
		Object char_literal392_tree=null;
		Object AsyncStatus393_tree=null;
		Object char_literal394_tree=null;
		Object char_literal396_tree=null;
		Object SuspendWait397_tree=null;
		Object char_literal398_tree=null;
		Object char_literal400_tree=null;
		Object Wait401_tree=null;
		Object char_literal402_tree=null;
		Object char_literal403_tree=null;
		Object char_literal404_tree=null;
		Object char_literal405_tree=null;
		Object Chain406_tree=null;
		Object char_literal407_tree=null;
		Object char_literal408_tree=null;
		Object char_literal409_tree=null;
		Object Signal410_tree=null;
		Object char_literal411_tree=null;
		Object char_literal412_tree=null;
		Object char_literal413_tree=null;
		Object Sleep414_tree=null;
		Object char_literal415_tree=null;
		Object char_literal417_tree=null;
		Object Matches418_tree=null;
		Object char_literal419_tree=null;
		Object char_literal420_tree=null;
		Object char_literal421_tree=null;
		Object Rand422_tree=null;
		Object char_literal423_tree=null;
		Object char_literal425_tree=null;
		Object Spawn426_tree=null;
		Object char_literal427_tree=null;
		Object char_literal428_tree=null;
		Object char_literal429_tree=null;
		Object char_literal430_tree=null;
		Object Defined431_tree=null;
		Object char_literal432_tree=null;
		Object Identifier433_tree=null;
		Object char_literal434_tree=null;
		Object Defined435_tree=null;
		Object char_literal436_tree=null;
		Object char_literal438_tree=null;
		Object Round439_tree=null;
		Object char_literal440_tree=null;
		Object char_literal441_tree=null;
		Object char_literal442_tree=null;
		Object Lib443_tree=null;
		Object char_literal444_tree=null;
		Object char_literal446_tree=null;
		Object Call447_tree=null;
		Object char_literal448_tree=null;
		Object char_literal449_tree=null;
		Object char_literal450_tree=null;
		Object char_literal451_tree=null;
		Object New452_tree=null;
		Object char_literal453_tree=null;
		Object char_literal454_tree=null;
		Object GenSchema455_tree=null;
		Object char_literal456_tree=null;
		Object char_literal457_tree=null;
		Object GenStruct458_tree=null;
		Object char_literal459_tree=null;
		Object Identifier460_tree=null;
		Object char_literal461_tree=null;
		Object char_literal462_tree=null;
		Object Template463_tree=null;
		Object char_literal464_tree=null;
		Object char_literal465_tree=null;
		Object char_literal466_tree=null;
		Object KernelIdentifier467_tree=null;
		Object char_literal468_tree=null;
		Object char_literal470_tree=null;
		RewriteRuleTokenStream stream_Delete=new RewriteRuleTokenStream(adaptor,"token Delete");
		RewriteRuleTokenStream stream_Fold=new RewriteRuleTokenStream(adaptor,"token Fold");
		RewriteRuleTokenStream stream_All=new RewriteRuleTokenStream(adaptor,"token All");
		RewriteRuleTokenStream stream_MkDir=new RewriteRuleTokenStream(adaptor,"token MkDir");
		RewriteRuleTokenStream stream_New=new RewriteRuleTokenStream(adaptor,"token New");
		RewriteRuleTokenStream stream_DropWhile=new RewriteRuleTokenStream(adaptor,"token DropWhile");
		RewriteRuleTokenStream stream_Archive=new RewriteRuleTokenStream(adaptor,"token Archive");
		RewriteRuleTokenStream stream_Port=new RewriteRuleTokenStream(adaptor,"token Port");
		RewriteRuleTokenStream stream_AsyncStatus=new RewriteRuleTokenStream(adaptor,"token AsyncStatus");
		RewriteRuleTokenStream stream_Difference=new RewriteRuleTokenStream(adaptor,"token Difference");
		RewriteRuleTokenStream stream_Remove=new RewriteRuleTokenStream(adaptor,"token Remove");
		RewriteRuleTokenStream stream_Template=new RewriteRuleTokenStream(adaptor,"token Template");
		RewriteRuleTokenStream stream_Assert=new RewriteRuleTokenStream(adaptor,"token Assert");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_SuspendWait=new RewriteRuleTokenStream(adaptor,"token SuspendWait");
		RewriteRuleTokenStream stream_Spawn=new RewriteRuleTokenStream(adaptor,"token Spawn");
		RewriteRuleTokenStream stream_RPull=new RewriteRuleTokenStream(adaptor,"token RPull");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleTokenStream stream_TakeWhile=new RewriteRuleTokenStream(adaptor,"token TakeWhile");
		RewriteRuleTokenStream stream_RPush=new RewriteRuleTokenStream(adaptor,"token RPush");
		RewriteRuleTokenStream stream_Defined=new RewriteRuleTokenStream(adaptor,"token Defined");
		RewriteRuleTokenStream stream_Json=new RewriteRuleTokenStream(adaptor,"token Json");
		RewriteRuleTokenStream stream_Transpose=new RewriteRuleTokenStream(adaptor,"token Transpose");
		RewriteRuleTokenStream stream_KernelIdentifier=new RewriteRuleTokenStream(adaptor,"token KernelIdentifier");
		RewriteRuleTokenStream stream_Evals=new RewriteRuleTokenStream(adaptor,"token Evals");
		RewriteRuleTokenStream stream_PutCache=new RewriteRuleTokenStream(adaptor,"token PutCache");
		RewriteRuleTokenStream stream_Copy=new RewriteRuleTokenStream(adaptor,"token Copy");
		RewriteRuleTokenStream stream_Unique=new RewriteRuleTokenStream(adaptor,"token Unique");
		RewriteRuleTokenStream stream_Close=new RewriteRuleTokenStream(adaptor,"token Close");
		RewriteRuleTokenStream stream_IsFolder=new RewriteRuleTokenStream(adaptor,"token IsFolder");
		RewriteRuleTokenStream stream_Split=new RewriteRuleTokenStream(adaptor,"token Split");
		RewriteRuleTokenStream stream_Wait=new RewriteRuleTokenStream(adaptor,"token Wait");
		RewriteRuleTokenStream stream_File=new RewriteRuleTokenStream(adaptor,"token File");
		RewriteRuleTokenStream stream_Chain=new RewriteRuleTokenStream(adaptor,"token Chain");
		RewriteRuleTokenStream stream_Message=new RewriteRuleTokenStream(adaptor,"token Message");
		RewriteRuleTokenStream stream_Matches=new RewriteRuleTokenStream(adaptor,"token Matches");
		RewriteRuleTokenStream stream_MergeIf=new RewriteRuleTokenStream(adaptor,"token MergeIf");
		RewriteRuleTokenStream stream_Suspend=new RewriteRuleTokenStream(adaptor,"token Suspend");
		RewriteRuleTokenStream stream_Any=new RewriteRuleTokenStream(adaptor,"token Any");
		RewriteRuleTokenStream stream_MapFn=new RewriteRuleTokenStream(adaptor,"token MapFn");
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_Signal=new RewriteRuleTokenStream(adaptor,"token Signal");
		RewriteRuleTokenStream stream_Format=new RewriteRuleTokenStream(adaptor,"token Format");
		RewriteRuleTokenStream stream_AsyncCallScript=new RewriteRuleTokenStream(adaptor,"token AsyncCallScript");
		RewriteRuleTokenStream stream_Round=new RewriteRuleTokenStream(adaptor,"token Round");
		RewriteRuleTokenStream stream_GenStruct=new RewriteRuleTokenStream(adaptor,"token GenStruct");
		RewriteRuleTokenStream stream_Debug=new RewriteRuleTokenStream(adaptor,"token Debug");
		RewriteRuleTokenStream stream_UrlEncode=new RewriteRuleTokenStream(adaptor,"token UrlEncode");
		RewriteRuleTokenStream stream_FilterFn=new RewriteRuleTokenStream(adaptor,"token FilterFn");
		RewriteRuleTokenStream stream_Replace=new RewriteRuleTokenStream(adaptor,"token Replace");
		RewriteRuleTokenStream stream_IsFile=new RewriteRuleTokenStream(adaptor,"token IsFile");
		RewriteRuleTokenStream stream_Call=new RewriteRuleTokenStream(adaptor,"token Call");
		RewriteRuleTokenStream stream_Rand=new RewriteRuleTokenStream(adaptor,"token Rand");
		RewriteRuleTokenStream stream_Vars=new RewriteRuleTokenStream(adaptor,"token Vars");
		RewriteRuleTokenStream stream_Lib=new RewriteRuleTokenStream(adaptor,"token Lib");
		RewriteRuleTokenStream stream_TypeOf=new RewriteRuleTokenStream(adaptor,"token TypeOf");
		RewriteRuleTokenStream stream_Join=new RewriteRuleTokenStream(adaptor,"token Join");
		RewriteRuleTokenStream stream_ReadDir=new RewriteRuleTokenStream(adaptor,"token ReadDir");
		RewriteRuleTokenStream stream_SplitWith=new RewriteRuleTokenStream(adaptor,"token SplitWith");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_Uuid=new RewriteRuleTokenStream(adaptor,"token Uuid");
		RewriteRuleTokenStream stream_Sleep=new RewriteRuleTokenStream(adaptor,"token Sleep");
		RewriteRuleTokenStream stream_Timer=new RewriteRuleTokenStream(adaptor,"token Timer");
		RewriteRuleTokenStream stream_Merge=new RewriteRuleTokenStream(adaptor,"token Merge");
		RewriteRuleTokenStream stream_GetCache=new RewriteRuleTokenStream(adaptor,"token GetCache");
		RewriteRuleTokenStream stream_GenSchema=new RewriteRuleTokenStream(adaptor,"token GenSchema");
		RewriteRuleTokenStream stream_FromJson=new RewriteRuleTokenStream(adaptor,"token FromJson");
		RewriteRuleTokenStream stream_UrlDecode=new RewriteRuleTokenStream(adaptor,"token UrlDecode");
		RewriteRuleTokenStream stream_AsyncCall=new RewriteRuleTokenStream(adaptor,"token AsyncCall");
		RewriteRuleTokenStream stream_B64Decompress=new RewriteRuleTokenStream(adaptor,"token B64Decompress");
		RewriteRuleTokenStream stream_B64Compress=new RewriteRuleTokenStream(adaptor,"token B64Compress");
		RewriteRuleTokenStream stream_MD5=new RewriteRuleTokenStream(adaptor,"token MD5");
		RewriteRuleSubtreeStream stream_lookup=new RewriteRuleSubtreeStream(adaptor,"rule lookup");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_exprList=new RewriteRuleSubtreeStream(adaptor,"rule exprList");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:485:3: ( TypeOf '(' expression ')' -> ^( FUNC_CALL[$TypeOf] TypeOf expression ) | Assert '(' exp= expression ')' -> ^( FUNC_CALL[$Assert] Assert $exp $exp) | Assert '(' msg= expression ',' exp= expression ')' -> ^( FUNC_CALL[$Assert] Assert $msg $exp) | Replace '(' v= expression ',' s= expression ',' t= expression ')' -> ^( FUNC_CALL[$Replace] Replace $v $s $t) | RPull '(' u= expression ')' -> ^( FUNC_CALL[$RPull] RPull $u) | RPush '(' u= expression ',' v= expression ( ',' o= expression )? ')' -> ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? ) | Transpose '(' expression ')' -> ^( FUNC_CALL[$Transpose] Transpose expression ) | B64Compress '(' expression ')' -> ^( FUNC_CALL[$B64Compress] B64Compress expression ) | B64Decompress '(' expression ')' -> ^( FUNC_CALL[$B64Decompress] B64Decompress expression ) | Debug '(' expression ')' -> ^( FUNC_CALL[$Debug] Debug expression ) | Evals '(' expression ')' -> ^( FUNC_CALL[$Evals] Evals expression ) | ReadDir '(' expression ')' -> ^( FUNC_CALL[$ReadDir] ReadDir expression ) | MkDir '(' expression ')' -> ^( FUNC_CALL[$MkDir] MkDir expression ) | IsFile '(' expression ')' -> ^( FUNC_CALL[$IsFile] IsFile expression ) | IsFolder '(' expression ')' -> ^( FUNC_CALL[$IsFolder] IsFolder expression ) | File '(' exprList ')' -> ^( FUNC_CALL[$File] File exprList ) | Delete '(' expression ')' -> ^( FUNC_CALL[$Delete] Delete expression ) | Archive '(' expression ')' -> ^( FUNC_CALL[$Archive] Archive expression ) | Port '(' expression ')' -> ^( FUNC_CALL[$Port] Port expression ) | Suspend '(' expression ')' -> ^( FUNC_CALL[$Suspend] Suspend expression ) | Difference '(' exprList ')' -> ^( FUNC_CALL[$Difference] Difference exprList ) | Remove '(' Identifier ',' k= expression ')' -> ^( FUNC_CALL[$Remove] Remove Identifier $k) | Join '(' exprList ')' -> ^( FUNC_CALL[$Join] Join exprList ) | Unique '(' exprList ')' -> ^( FUNC_CALL[$Unique] Unique exprList ) | Copy '(' s= expression ',' t= expression ')' -> ^( FUNC_CALL[$Copy] Copy $s $t) | Close '(' expression ')' -> ^( FUNC_CALL[$Close] Close expression ) | Timer '(' ( expression )? ')' -> ^( FUNC_CALL[$Timer] Timer ( expression )? ) | Vars '(' ')' -> ^( FUNC_CALL[$Vars] Vars ) | MergeIf '(' exprList ')' -> ^( FUNC_CALL[$MergeIf] MergeIf exprList ) | Format '(' exprList ')' -> ^( FUNC_CALL[$Format] Format exprList ) | Merge '(' exprList ')' -> ^( FUNC_CALL[$Merge] Merge exprList ) | Message '(' a= expression ',' m= expression ')' -> ^( FUNC_CALL[$Message] Message $a $m) | PutCache '(' v= expression ',' n= expression ( ',' exp= expression )? ')' -> ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? ) | GetCache '(' n= expression ')' -> ^( FUNC_CALL[$GetCache] GetCache $n) | Json '(' expression ')' -> ^( FUNC_CALL[$Json] Json expression ) | FromJson '(' expression ')' -> ^( FUNC_CALL[$FromJson] FromJson expression ) | UrlEncode '(' expression ')' -> ^( FUNC_CALL[$UrlEncode] UrlEncode expression ) | UrlDecode '(' expression ')' -> ^( FUNC_CALL[$UrlDecode] UrlDecode expression ) | MD5 '(' expression ')' -> ^( FUNC_CALL[$MD5] MD5 expression ) | MapFn '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$MapFn] MapFn Identifier expression ) | FilterFn '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression ) | Fold '(' Identifier ',' expression ',' expression ')' -> ^( FUNC_CALL[$Fold] Fold Identifier expression expression ) | Any '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$Any] Any Identifier expression ) | All '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$All] All Identifier expression ) | TakeWhile '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression ) | DropWhile '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression ) | SplitWith '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression ) | Split '(' str= expression ',' sep= expression ',' quoter= expression ')' -> ^( FUNC_CALL[$Split] Split $str $sep $quoter) | Uuid '(' ')' -> ^( FUNC_CALL[$Uuid] Uuid ) | AsyncCall '(' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? ) | AsyncCallScript '(' r= expression ',' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? ) | AsyncStatus '(' expression ')' -> ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression ) | SuspendWait '(' exprList ')' -> ^( FUNC_CALL[$SuspendWait] SuspendWait exprList ) | Wait '(' d= expression ( ',' in= expression ',' re= expression )? ')' -> ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? ) | Chain '(' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$Chain] Chain $s ( $p)? ) | Signal '(' d= expression ',' v= expression ')' -> ^( FUNC_CALL[$Signal] Signal $d $v) | Sleep '(' expression ')' -> ^( FUNC_CALL[$Sleep] Sleep expression ) | Matches '(' s= expression ',' r= expression ')' -> ^( FUNC_CALL[$Matches] Matches $s $r) | Rand '(' expression ')' -> ^( FUNC_CALL[$Rand] Rand expression ) | Spawn '(' p= expression ( ',' ex= expression ',' f= expression )? ')' -> ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? ) | Defined '(' Identifier ')' -> ^( FUNC_CALL[$Defined] Defined Identifier ) | Defined '(' lookup ')' -> ^( FUNC_CALL[$Defined] Defined lookup ) | Round '(' v= expression ( ',' dp= expression )? ')' -> ^( FUNC_CALL[$Round] Round $v ( $dp)? ) | Lib '(' expression ')' -> ^( FUNC_CALL[$Lib] Lib expression ) | Call '(' a= expression ',' b= expression ',' c= expression ')' -> ^( FUNC_CALL[$Call] Call $a $b $c) | New '(' a= expression ')' -> ^( FUNC_CALL[$New] New $a) | GenSchema '(' a= expression ')' -> ^( FUNC_CALL[$GenSchema] GenSchema $a) | GenStruct '(' Identifier ',' b= expression ')' -> ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b) | Template '(' t= expression ',' p= expression ')' -> ^( FUNC_CALL[$Template] Template $t $p) | KernelIdentifier '(' ( exprList )? ')' -> ^( KernelIdentifier ( exprList )? ) )
			int alt34=70;
			alt34 = dfa34.predict(input);
			switch (alt34) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:485:6: TypeOf '(' expression ')'
					{
					TypeOf170=(Token)match(input,TypeOf,FOLLOW_TypeOf_in_func21935); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TypeOf.add(TypeOf170);

					char_literal171=(Token)match(input,OParen,FOLLOW_OParen_in_func21937); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal171);

					pushFollow(FOLLOW_expression_in_func21939);
					expression172=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression172.getTree());
					char_literal173=(Token)match(input,CParen,FOLLOW_CParen_in_func21941); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal173);

					// AST REWRITE
					// elements: expression, TypeOf
					// 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 = (Object)adaptor.nil();
					// 485:35: -> ^( FUNC_CALL[$TypeOf] TypeOf expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:485:38: ^( FUNC_CALL[$TypeOf] TypeOf expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, TypeOf170), root_1);
						adaptor.addChild(root_1, stream_TypeOf.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:486:6: Assert '(' exp= expression ')'
					{
					Assert174=(Token)match(input,Assert,FOLLOW_Assert_in_func21962); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assert.add(Assert174);

					char_literal175=(Token)match(input,OParen,FOLLOW_OParen_in_func21964); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal175);

					pushFollow(FOLLOW_expression_in_func21968);
					exp=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(exp.getTree());
					char_literal176=(Token)match(input,CParen,FOLLOW_CParen_in_func21970); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal176);

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

					root_0 = (Object)adaptor.nil();
					// 486:39: -> ^( FUNC_CALL[$Assert] Assert $exp $exp)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:486:42: ^( FUNC_CALL[$Assert] Assert $exp $exp)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Assert174), root_1);
						adaptor.addChild(root_1, stream_Assert.nextNode());
						adaptor.addChild(root_1, stream_exp.nextTree());
						adaptor.addChild(root_1, stream_exp.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:487:6: Assert '(' msg= expression ',' exp= expression ')'
					{
					Assert177=(Token)match(input,Assert,FOLLOW_Assert_in_func21995); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assert.add(Assert177);

					char_literal178=(Token)match(input,OParen,FOLLOW_OParen_in_func21997); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal178);

					pushFollow(FOLLOW_expression_in_func22001);
					msg=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(msg.getTree());
					char_literal179=(Token)match(input,Comma,FOLLOW_Comma_in_func22003); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal179);

					pushFollow(FOLLOW_expression_in_func22007);
					exp=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(exp.getTree());
					char_literal180=(Token)match(input,CParen,FOLLOW_CParen_in_func22009); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal180);

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

					root_0 = (Object)adaptor.nil();
					// 487:58: -> ^( FUNC_CALL[$Assert] Assert $msg $exp)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:487:61: ^( FUNC_CALL[$Assert] Assert $msg $exp)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Assert177), root_1);
						adaptor.addChild(root_1, stream_Assert.nextNode());
						adaptor.addChild(root_1, stream_msg.nextTree());
						adaptor.addChild(root_1, stream_exp.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:488:6: Replace '(' v= expression ',' s= expression ',' t= expression ')'
					{
					Replace181=(Token)match(input,Replace,FOLLOW_Replace_in_func22034); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Replace.add(Replace181);

					char_literal182=(Token)match(input,OParen,FOLLOW_OParen_in_func22036); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal182);

					pushFollow(FOLLOW_expression_in_func22040);
					v=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(v.getTree());
					char_literal183=(Token)match(input,Comma,FOLLOW_Comma_in_func22042); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal183);

					pushFollow(FOLLOW_expression_in_func22046);
					s=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(s.getTree());
					char_literal184=(Token)match(input,Comma,FOLLOW_Comma_in_func22048); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal184);

					pushFollow(FOLLOW_expression_in_func22052);
					t=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(t.getTree());
					char_literal185=(Token)match(input,CParen,FOLLOW_CParen_in_func22054); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal185);

					// AST REWRITE
					// elements: Replace, t, v, s
					// token labels: 
					// rule labels: s, t, v, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);
					RewriteRuleSubtreeStream stream_t=new RewriteRuleSubtreeStream(adaptor,"rule t",t!=null?t.getTree():null);
					RewriteRuleSubtreeStream stream_v=new RewriteRuleSubtreeStream(adaptor,"rule v",v!=null?v.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 488:69: -> ^( FUNC_CALL[$Replace] Replace $v $s $t)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:488:72: ^( FUNC_CALL[$Replace] Replace $v $s $t)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Replace181), root_1);
						adaptor.addChild(root_1, stream_Replace.nextNode());
						adaptor.addChild(root_1, stream_v.nextTree());
						adaptor.addChild(root_1, stream_s.nextTree());
						adaptor.addChild(root_1, stream_t.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:489:6: RPull '(' u= expression ')'
					{
					RPull186=(Token)match(input,RPull,FOLLOW_RPull_in_func22079); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPull.add(RPull186);

					char_literal187=(Token)match(input,OParen,FOLLOW_OParen_in_func22081); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal187);

					pushFollow(FOLLOW_expression_in_func22085);
					u=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(u.getTree());
					char_literal188=(Token)match(input,CParen,FOLLOW_CParen_in_func22087); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal188);

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

					root_0 = (Object)adaptor.nil();
					// 489:33: -> ^( FUNC_CALL[$RPull] RPull $u)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:489:36: ^( FUNC_CALL[$RPull] RPull $u)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, RPull186), root_1);
						adaptor.addChild(root_1, stream_RPull.nextNode());
						adaptor.addChild(root_1, stream_u.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:6: RPush '(' u= expression ',' v= expression ( ',' o= expression )? ')'
					{
					RPush189=(Token)match(input,RPush,FOLLOW_RPush_in_func22106); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPush.add(RPush189);

					char_literal190=(Token)match(input,OParen,FOLLOW_OParen_in_func22108); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal190);

					pushFollow(FOLLOW_expression_in_func22112);
					u=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(u.getTree());
					char_literal191=(Token)match(input,Comma,FOLLOW_Comma_in_func22114); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal191);

					pushFollow(FOLLOW_expression_in_func22118);
					v=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(v.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:46: ( ',' o= expression )?
					int alt24=2;
					int LA24_0 = input.LA(1);
					if ( (LA24_0==Comma) ) {
						alt24=1;
					}
					switch (alt24) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:47: ',' o= expression
							{
							char_literal192=(Token)match(input,Comma,FOLLOW_Comma_in_func22121); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal192);

							pushFollow(FOLLOW_expression_in_func22125);
							o=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(o.getTree());
							}
							break;

					}

					char_literal193=(Token)match(input,CParen,FOLLOW_CParen_in_func22128); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal193);

					// AST REWRITE
					// elements: v, RPush, o, u
					// token labels: 
					// rule labels: u, v, retval, o
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_u=new RewriteRuleSubtreeStream(adaptor,"rule u",u!=null?u.getTree():null);
					RewriteRuleSubtreeStream stream_v=new RewriteRuleSubtreeStream(adaptor,"rule v",v!=null?v.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_o=new RewriteRuleSubtreeStream(adaptor,"rule o",o!=null?o.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 490:69: -> ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:72: ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, RPush189), root_1);
						adaptor.addChild(root_1, stream_RPush.nextNode());
						adaptor.addChild(root_1, stream_u.nextTree());
						adaptor.addChild(root_1, stream_v.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:105: ( $o)?
						if ( stream_o.hasNext() ) {
							adaptor.addChild(root_1, stream_o.nextTree());
						}
						stream_o.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:491:6: Transpose '(' expression ')'
					{
					Transpose194=(Token)match(input,Transpose,FOLLOW_Transpose_in_func22154); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Transpose.add(Transpose194);

					char_literal195=(Token)match(input,OParen,FOLLOW_OParen_in_func22156); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal195);

					pushFollow(FOLLOW_expression_in_func22158);
					expression196=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression196.getTree());
					char_literal197=(Token)match(input,CParen,FOLLOW_CParen_in_func22160); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal197);

					// AST REWRITE
					// elements: Transpose, 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 = (Object)adaptor.nil();
					// 491:35: -> ^( FUNC_CALL[$Transpose] Transpose expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:491:38: ^( FUNC_CALL[$Transpose] Transpose expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Transpose194), root_1);
						adaptor.addChild(root_1, stream_Transpose.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:492:6: B64Compress '(' expression ')'
					{
					B64Compress198=(Token)match(input,B64Compress,FOLLOW_B64Compress_in_func22178); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_B64Compress.add(B64Compress198);

					char_literal199=(Token)match(input,OParen,FOLLOW_OParen_in_func22180); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal199);

					pushFollow(FOLLOW_expression_in_func22182);
					expression200=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression200.getTree());
					char_literal201=(Token)match(input,CParen,FOLLOW_CParen_in_func22184); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal201);

					// AST REWRITE
					// elements: expression, B64Compress
					// 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 = (Object)adaptor.nil();
					// 492:37: -> ^( FUNC_CALL[$B64Compress] B64Compress expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:492:40: ^( FUNC_CALL[$B64Compress] B64Compress expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, B64Compress198), root_1);
						adaptor.addChild(root_1, stream_B64Compress.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:493:6: B64Decompress '(' expression ')'
					{
					B64Decompress202=(Token)match(input,B64Decompress,FOLLOW_B64Decompress_in_func22202); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_B64Decompress.add(B64Decompress202);

					char_literal203=(Token)match(input,OParen,FOLLOW_OParen_in_func22204); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal203);

					pushFollow(FOLLOW_expression_in_func22206);
					expression204=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression204.getTree());
					char_literal205=(Token)match(input,CParen,FOLLOW_CParen_in_func22208); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal205);

					// AST REWRITE
					// elements: B64Decompress, 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 = (Object)adaptor.nil();
					// 493:39: -> ^( FUNC_CALL[$B64Decompress] B64Decompress expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:493:42: ^( FUNC_CALL[$B64Decompress] B64Decompress expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, B64Decompress202), root_1);
						adaptor.addChild(root_1, stream_B64Decompress.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:494:6: Debug '(' expression ')'
					{
					Debug206=(Token)match(input,Debug,FOLLOW_Debug_in_func22226); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Debug.add(Debug206);

					char_literal207=(Token)match(input,OParen,FOLLOW_OParen_in_func22228); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal207);

					pushFollow(FOLLOW_expression_in_func22230);
					expression208=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression208.getTree());
					char_literal209=(Token)match(input,CParen,FOLLOW_CParen_in_func22232); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal209);

					// AST REWRITE
					// elements: expression, Debug
					// 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 = (Object)adaptor.nil();
					// 494:35: -> ^( FUNC_CALL[$Debug] Debug expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:494:38: ^( FUNC_CALL[$Debug] Debug expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Debug206), root_1);
						adaptor.addChild(root_1, stream_Debug.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:495:6: Evals '(' expression ')'
					{
					Evals210=(Token)match(input,Evals,FOLLOW_Evals_in_func22254); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Evals.add(Evals210);

					char_literal211=(Token)match(input,OParen,FOLLOW_OParen_in_func22256); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal211);

					pushFollow(FOLLOW_expression_in_func22258);
					expression212=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression212.getTree());
					char_literal213=(Token)match(input,CParen,FOLLOW_CParen_in_func22260); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal213);

					// AST REWRITE
					// elements: Evals, 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 = (Object)adaptor.nil();
					// 495:35: -> ^( FUNC_CALL[$Evals] Evals expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:495:38: ^( FUNC_CALL[$Evals] Evals expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Evals210), root_1);
						adaptor.addChild(root_1, stream_Evals.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:496:6: ReadDir '(' expression ')'
					{
					ReadDir214=(Token)match(input,ReadDir,FOLLOW_ReadDir_in_func22282); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ReadDir.add(ReadDir214);

					char_literal215=(Token)match(input,OParen,FOLLOW_OParen_in_func22284); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal215);

					pushFollow(FOLLOW_expression_in_func22286);
					expression216=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression216.getTree());
					char_literal217=(Token)match(input,CParen,FOLLOW_CParen_in_func22288); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal217);

					// AST REWRITE
					// elements: expression, ReadDir
					// 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 = (Object)adaptor.nil();
					// 496:35: -> ^( FUNC_CALL[$ReadDir] ReadDir expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:496:38: ^( FUNC_CALL[$ReadDir] ReadDir expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, ReadDir214), root_1);
						adaptor.addChild(root_1, stream_ReadDir.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:497:6: MkDir '(' expression ')'
					{
					MkDir218=(Token)match(input,MkDir,FOLLOW_MkDir_in_func22308); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MkDir.add(MkDir218);

					char_literal219=(Token)match(input,OParen,FOLLOW_OParen_in_func22310); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal219);

					pushFollow(FOLLOW_expression_in_func22312);
					expression220=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression220.getTree());
					char_literal221=(Token)match(input,CParen,FOLLOW_CParen_in_func22314); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal221);

					// AST REWRITE
					// elements: expression, MkDir
					// 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 = (Object)adaptor.nil();
					// 497:35: -> ^( FUNC_CALL[$MkDir] MkDir expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:497:38: ^( FUNC_CALL[$MkDir] MkDir expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MkDir218), root_1);
						adaptor.addChild(root_1, stream_MkDir.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:498:6: IsFile '(' expression ')'
					{
					IsFile222=(Token)match(input,IsFile,FOLLOW_IsFile_in_func22336); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IsFile.add(IsFile222);

					char_literal223=(Token)match(input,OParen,FOLLOW_OParen_in_func22338); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal223);

					pushFollow(FOLLOW_expression_in_func22340);
					expression224=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression224.getTree());
					char_literal225=(Token)match(input,CParen,FOLLOW_CParen_in_func22342); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal225);

					// AST REWRITE
					// elements: expression, IsFile
					// 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 = (Object)adaptor.nil();
					// 498:35: -> ^( FUNC_CALL[$IsFile] IsFile expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:498:38: ^( FUNC_CALL[$IsFile] IsFile expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, IsFile222), root_1);
						adaptor.addChild(root_1, stream_IsFile.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:499:6: IsFolder '(' expression ')'
					{
					IsFolder226=(Token)match(input,IsFolder,FOLLOW_IsFolder_in_func22363); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IsFolder.add(IsFolder226);

					char_literal227=(Token)match(input,OParen,FOLLOW_OParen_in_func22365); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal227);

					pushFollow(FOLLOW_expression_in_func22367);
					expression228=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression228.getTree());
					char_literal229=(Token)match(input,CParen,FOLLOW_CParen_in_func22369); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal229);

					// AST REWRITE
					// elements: IsFolder, 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 = (Object)adaptor.nil();
					// 499:35: -> ^( FUNC_CALL[$IsFolder] IsFolder expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:499:38: ^( FUNC_CALL[$IsFolder] IsFolder expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, IsFolder226), root_1);
						adaptor.addChild(root_1, stream_IsFolder.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:500:6: File '(' exprList ')'
					{
					File230=(Token)match(input,File,FOLLOW_File_in_func22388); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_File.add(File230);

					char_literal231=(Token)match(input,OParen,FOLLOW_OParen_in_func22390); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal231);

					pushFollow(FOLLOW_exprList_in_func22392);
					exprList232=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList232.getTree());
					char_literal233=(Token)match(input,CParen,FOLLOW_CParen_in_func22394); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal233);

					// AST REWRITE
					// elements: exprList, File
					// 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 = (Object)adaptor.nil();
					// 500:35: -> ^( FUNC_CALL[$File] File exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:500:38: ^( FUNC_CALL[$File] File exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, File230), root_1);
						adaptor.addChild(root_1, stream_File.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:501:6: Delete '(' expression ')'
					{
					Delete234=(Token)match(input,Delete,FOLLOW_Delete_in_func22419); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Delete.add(Delete234);

					char_literal235=(Token)match(input,OParen,FOLLOW_OParen_in_func22421); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal235);

					pushFollow(FOLLOW_expression_in_func22423);
					expression236=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression236.getTree());
					char_literal237=(Token)match(input,CParen,FOLLOW_CParen_in_func22425); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal237);

					// AST REWRITE
					// elements: Delete, 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 = (Object)adaptor.nil();
					// 501:35: -> ^( FUNC_CALL[$Delete] Delete expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:501:38: ^( FUNC_CALL[$Delete] Delete expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Delete234), root_1);
						adaptor.addChild(root_1, stream_Delete.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 18 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:502:6: Archive '(' expression ')'
					{
					Archive238=(Token)match(input,Archive,FOLLOW_Archive_in_func22446); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Archive.add(Archive238);

					char_literal239=(Token)match(input,OParen,FOLLOW_OParen_in_func22448); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal239);

					pushFollow(FOLLOW_expression_in_func22450);
					expression240=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression240.getTree());
					char_literal241=(Token)match(input,CParen,FOLLOW_CParen_in_func22452); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal241);

					// AST REWRITE
					// elements: Archive, 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 = (Object)adaptor.nil();
					// 502:35: -> ^( FUNC_CALL[$Archive] Archive expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:502:38: ^( FUNC_CALL[$Archive] Archive expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Archive238), root_1);
						adaptor.addChild(root_1, stream_Archive.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 19 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:503:6: Port '(' expression ')'
					{
					Port242=(Token)match(input,Port,FOLLOW_Port_in_func22472); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Port.add(Port242);

					char_literal243=(Token)match(input,OParen,FOLLOW_OParen_in_func22474); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal243);

					pushFollow(FOLLOW_expression_in_func22476);
					expression244=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression244.getTree());
					char_literal245=(Token)match(input,CParen,FOLLOW_CParen_in_func22478); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal245);

					// AST REWRITE
					// elements: Port, 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 = (Object)adaptor.nil();
					// 503:35: -> ^( FUNC_CALL[$Port] Port expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:503:38: ^( FUNC_CALL[$Port] Port expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Port242), root_1);
						adaptor.addChild(root_1, stream_Port.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 20 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:504:6: Suspend '(' expression ')'
					{
					Suspend246=(Token)match(input,Suspend,FOLLOW_Suspend_in_func22501); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Suspend.add(Suspend246);

					char_literal247=(Token)match(input,OParen,FOLLOW_OParen_in_func22503); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal247);

					pushFollow(FOLLOW_expression_in_func22505);
					expression248=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression248.getTree());
					char_literal249=(Token)match(input,CParen,FOLLOW_CParen_in_func22507); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal249);

					// AST REWRITE
					// elements: expression, Suspend
					// 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 = (Object)adaptor.nil();
					// 504:35: -> ^( FUNC_CALL[$Suspend] Suspend expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:504:38: ^( FUNC_CALL[$Suspend] Suspend expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Suspend246), root_1);
						adaptor.addChild(root_1, stream_Suspend.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 21 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:505:6: Difference '(' exprList ')'
					{
					Difference250=(Token)match(input,Difference,FOLLOW_Difference_in_func22527); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Difference.add(Difference250);

					char_literal251=(Token)match(input,OParen,FOLLOW_OParen_in_func22529); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal251);

					pushFollow(FOLLOW_exprList_in_func22531);
					exprList252=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList252.getTree());
					char_literal253=(Token)match(input,CParen,FOLLOW_CParen_in_func22533); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal253);

					// AST REWRITE
					// elements: Difference, exprList
					// 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 = (Object)adaptor.nil();
					// 505:35: -> ^( FUNC_CALL[$Difference] Difference exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:505:38: ^( FUNC_CALL[$Difference] Difference exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Difference250), root_1);
						adaptor.addChild(root_1, stream_Difference.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 22 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:506:6: Remove '(' Identifier ',' k= expression ')'
					{
					Remove254=(Token)match(input,Remove,FOLLOW_Remove_in_func22552); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Remove.add(Remove254);

					char_literal255=(Token)match(input,OParen,FOLLOW_OParen_in_func22554); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal255);

					Identifier256=(Token)match(input,Identifier,FOLLOW_Identifier_in_func22556); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier256);

					char_literal257=(Token)match(input,Comma,FOLLOW_Comma_in_func22558); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal257);

					pushFollow(FOLLOW_expression_in_func22562);
					k=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(k.getTree());
					char_literal258=(Token)match(input,CParen,FOLLOW_CParen_in_func22564); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal258);

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

					root_0 = (Object)adaptor.nil();
					// 506:49: -> ^( FUNC_CALL[$Remove] Remove Identifier $k)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:506:52: ^( FUNC_CALL[$Remove] Remove Identifier $k)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Remove254), root_1);
						adaptor.addChild(root_1, stream_Remove.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_k.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 23 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:507:6: Join '(' exprList ')'
					{
					Join259=(Token)match(input,Join,FOLLOW_Join_in_func22585); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Join.add(Join259);

					char_literal260=(Token)match(input,OParen,FOLLOW_OParen_in_func22587); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal260);

					pushFollow(FOLLOW_exprList_in_func22589);
					exprList261=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList261.getTree());
					char_literal262=(Token)match(input,CParen,FOLLOW_CParen_in_func22591); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal262);

					// AST REWRITE
					// elements: Join, exprList
					// 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 = (Object)adaptor.nil();
					// 507:35: -> ^( FUNC_CALL[$Join] Join exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:507:38: ^( FUNC_CALL[$Join] Join exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Join259), root_1);
						adaptor.addChild(root_1, stream_Join.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 24 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:508:6: Unique '(' exprList ')'
					{
					Unique263=(Token)match(input,Unique,FOLLOW_Unique_in_func22616); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Unique.add(Unique263);

					char_literal264=(Token)match(input,OParen,FOLLOW_OParen_in_func22618); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal264);

					pushFollow(FOLLOW_exprList_in_func22620);
					exprList265=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList265.getTree());
					char_literal266=(Token)match(input,CParen,FOLLOW_CParen_in_func22622); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal266);

					// AST REWRITE
					// elements: Unique, exprList
					// 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 = (Object)adaptor.nil();
					// 508:35: -> ^( FUNC_CALL[$Unique] Unique exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:508:38: ^( FUNC_CALL[$Unique] Unique exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Unique263), root_1);
						adaptor.addChild(root_1, stream_Unique.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 25 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:509:6: Copy '(' s= expression ',' t= expression ')'
					{
					Copy267=(Token)match(input,Copy,FOLLOW_Copy_in_func22645); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Copy.add(Copy267);

					char_literal268=(Token)match(input,OParen,FOLLOW_OParen_in_func22647); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal268);

					pushFollow(FOLLOW_expression_in_func22651);
					s=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(s.getTree());
					char_literal269=(Token)match(input,Comma,FOLLOW_Comma_in_func22653); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal269);

					pushFollow(FOLLOW_expression_in_func22657);
					t=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(t.getTree());
					char_literal270=(Token)match(input,CParen,FOLLOW_CParen_in_func22659); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal270);

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

					root_0 = (Object)adaptor.nil();
					// 509:49: -> ^( FUNC_CALL[$Copy] Copy $s $t)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:509:52: ^( FUNC_CALL[$Copy] Copy $s $t)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Copy267), root_1);
						adaptor.addChild(root_1, stream_Copy.nextNode());
						adaptor.addChild(root_1, stream_s.nextTree());
						adaptor.addChild(root_1, stream_t.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 26 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:510:6: Close '(' expression ')'
					{
					Close271=(Token)match(input,Close,FOLLOW_Close_in_func22681); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Close.add(Close271);

					char_literal272=(Token)match(input,OParen,FOLLOW_OParen_in_func22683); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal272);

					pushFollow(FOLLOW_expression_in_func22685);
					expression273=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression273.getTree());
					char_literal274=(Token)match(input,CParen,FOLLOW_CParen_in_func22687); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal274);

					// AST REWRITE
					// elements: Close, 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 = (Object)adaptor.nil();
					// 510:35: -> ^( FUNC_CALL[$Close] Close expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:510:38: ^( FUNC_CALL[$Close] Close expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Close271), root_1);
						adaptor.addChild(root_1, stream_Close.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 27 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:6: Timer '(' ( expression )? ')'
					{
					Timer275=(Token)match(input,Timer,FOLLOW_Timer_in_func22709); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Timer.add(Timer275);

					char_literal276=(Token)match(input,OParen,FOLLOW_OParen_in_func22711); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal276);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:16: ( expression )?
					int alt25=2;
					int LA25_0 = input.LA(1);
					if ( (LA25_0==All||(LA25_0 >= Any && LA25_0 <= Archive)||LA25_0==Assert||(LA25_0 >= AsyncCall && LA25_0 <= AsyncCallScript)||(LA25_0 >= AsyncStatus && LA25_0 <= B64Decompress)||LA25_0==Bool||(LA25_0 >= Call && LA25_0 <= Capabilities)||LA25_0==Cast||(LA25_0 >= Chain && LA25_0 <= Collate)||LA25_0==Copy||(LA25_0 >= Date && LA25_0 <= Debug)||(LA25_0 >= Defined && LA25_0 <= Difference)||LA25_0==DottedIdentifier||LA25_0==DropWhile||(LA25_0 >= Evals && LA25_0 <= Excl)||(LA25_0 >= File && LA25_0 <= Fold)||(LA25_0 >= Format && LA25_0 <= FromJson)||(LA25_0 >= GenSchema && LA25_0 <= HasCapability)||LA25_0==Identifier||LA25_0==Integer||(LA25_0 >= IsFile && LA25_0 <= IsFolder)||(LA25_0 >= Join && LA25_0 <= Json)||(LA25_0 >= KernelIdentifier && LA25_0 <= Keys)||(LA25_0 >= Lib && LA25_0 <= Long)||LA25_0==MD5||LA25_0==MapFn||(LA25_0 >= Matches && LA25_0 <= MkDir)||(LA25_0 >= New && LA25_0 <= OParen)||LA25_0==PackageIdentifier||LA25_0==Port||(LA25_0 >= Print && LA25_0 <= PropertyPlaceholder)||LA25_0==PutCache||LA25_0==QuotedString||(LA25_0 >= RPull && LA25_0 <= Replace)||LA25_0==Round||LA25_0==Signal||(LA25_0 >= Size && LA25_0 <= Sort)||(LA25_0 >= Spawn && LA25_0 <= String)||(LA25_0 >= Subtract && LA25_0 <= SuspendWait)||(LA25_0 >= TakeWhile && LA25_0 <= Template)||(LA25_0 >= Time && LA25_0 <= Timer)||LA25_0==Transpose||LA25_0==TypeOf||LA25_0==Unique||(LA25_0 >= UrlDecode && LA25_0 <= UrlEncode)||(LA25_0 >= Uuid && LA25_0 <= Wait)) ) {
						alt25=1;
					}
					switch (alt25) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:16: expression
							{
							pushFollow(FOLLOW_expression_in_func22713);
							expression277=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression277.getTree());
							}
							break;

					}

					char_literal278=(Token)match(input,CParen,FOLLOW_CParen_in_func22716); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal278);

					// AST REWRITE
					// elements: expression, Timer
					// 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 = (Object)adaptor.nil();
					// 511:36: -> ^( FUNC_CALL[$Timer] Timer ( expression )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:39: ^( FUNC_CALL[$Timer] Timer ( expression )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Timer275), root_1);
						adaptor.addChild(root_1, stream_Timer.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:65: ( expression )?
						if ( 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 28 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:512:6: Vars '(' ')'
					{
					Vars279=(Token)match(input,Vars,FOLLOW_Vars_in_func22739); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Vars.add(Vars279);

					char_literal280=(Token)match(input,OParen,FOLLOW_OParen_in_func22741); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal280);

					char_literal281=(Token)match(input,CParen,FOLLOW_CParen_in_func22743); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal281);

					// AST REWRITE
					// elements: Vars
					// 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 = (Object)adaptor.nil();
					// 512:38: -> ^( FUNC_CALL[$Vars] Vars )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:512:41: ^( FUNC_CALL[$Vars] Vars )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Vars279), root_1);
						adaptor.addChild(root_1, stream_Vars.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 29 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:513:6: MergeIf '(' exprList ')'
					{
					MergeIf282=(Token)match(input,MergeIf,FOLLOW_MergeIf_in_func22778); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MergeIf.add(MergeIf282);

					char_literal283=(Token)match(input,OParen,FOLLOW_OParen_in_func22780); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal283);

					pushFollow(FOLLOW_exprList_in_func22782);
					exprList284=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList284.getTree());
					char_literal285=(Token)match(input,CParen,FOLLOW_CParen_in_func22784); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal285);

					// AST REWRITE
					// elements: exprList, MergeIf
					// 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 = (Object)adaptor.nil();
					// 513:35: -> ^( FUNC_CALL[$MergeIf] MergeIf exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:513:38: ^( FUNC_CALL[$MergeIf] MergeIf exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MergeIf282), root_1);
						adaptor.addChild(root_1, stream_MergeIf.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 30 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:514:6: Format '(' exprList ')'
					{
					Format286=(Token)match(input,Format,FOLLOW_Format_in_func22806); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Format.add(Format286);

					char_literal287=(Token)match(input,OParen,FOLLOW_OParen_in_func22808); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal287);

					pushFollow(FOLLOW_exprList_in_func22810);
					exprList288=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList288.getTree());
					char_literal289=(Token)match(input,CParen,FOLLOW_CParen_in_func22812); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal289);

					// AST REWRITE
					// elements: exprList, Format
					// 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 = (Object)adaptor.nil();
					// 514:30: -> ^( FUNC_CALL[$Format] Format exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:514:33: ^( FUNC_CALL[$Format] Format exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Format286), root_1);
						adaptor.addChild(root_1, stream_Format.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 31 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:515:6: Merge '(' exprList ')'
					{
					Merge290=(Token)match(input,Merge,FOLLOW_Merge_in_func22830); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Merge.add(Merge290);

					char_literal291=(Token)match(input,OParen,FOLLOW_OParen_in_func22832); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal291);

					pushFollow(FOLLOW_exprList_in_func22834);
					exprList292=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList292.getTree());
					char_literal293=(Token)match(input,CParen,FOLLOW_CParen_in_func22836); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal293);

					// AST REWRITE
					// elements: exprList, Merge
					// 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 = (Object)adaptor.nil();
					// 515:35: -> ^( FUNC_CALL[$Merge] Merge exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:515:38: ^( FUNC_CALL[$Merge] Merge exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Merge290), root_1);
						adaptor.addChild(root_1, stream_Merge.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 32 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:516:6: Message '(' a= expression ',' m= expression ')'
					{
					Message294=(Token)match(input,Message,FOLLOW_Message_in_func22860); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Message.add(Message294);

					char_literal295=(Token)match(input,OParen,FOLLOW_OParen_in_func22862); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal295);

					pushFollow(FOLLOW_expression_in_func22866);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal296=(Token)match(input,Comma,FOLLOW_Comma_in_func22868); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal296);

					pushFollow(FOLLOW_expression_in_func22872);
					m=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(m.getTree());
					char_literal297=(Token)match(input,CParen,FOLLOW_CParen_in_func22874); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal297);

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

					root_0 = (Object)adaptor.nil();
					// 516:52: -> ^( FUNC_CALL[$Message] Message $a $m)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:516:55: ^( FUNC_CALL[$Message] Message $a $m)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Message294), root_1);
						adaptor.addChild(root_1, stream_Message.nextNode());
						adaptor.addChild(root_1, stream_a.nextTree());
						adaptor.addChild(root_1, stream_m.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 33 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:6: PutCache '(' v= expression ',' n= expression ( ',' exp= expression )? ')'
					{
					PutCache298=(Token)match(input,PutCache,FOLLOW_PutCache_in_func22896); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PutCache.add(PutCache298);

					char_literal299=(Token)match(input,OParen,FOLLOW_OParen_in_func22898); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal299);

					pushFollow(FOLLOW_expression_in_func22902);
					v=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(v.getTree());
					char_literal300=(Token)match(input,Comma,FOLLOW_Comma_in_func22904); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal300);

					pushFollow(FOLLOW_expression_in_func22908);
					n=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(n.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:49: ( ',' exp= expression )?
					int alt26=2;
					int LA26_0 = input.LA(1);
					if ( (LA26_0==Comma) ) {
						alt26=1;
					}
					switch (alt26) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:50: ',' exp= expression
							{
							char_literal301=(Token)match(input,Comma,FOLLOW_Comma_in_func22911); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal301);

							pushFollow(FOLLOW_expression_in_func22915);
							exp=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(exp.getTree());
							}
							break;

					}

					char_literal302=(Token)match(input,CParen,FOLLOW_CParen_in_func22919); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal302);

					// AST REWRITE
					// elements: PutCache, exp, v, n
					// token labels: 
					// rule labels: v, exp, n, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_v=new RewriteRuleSubtreeStream(adaptor,"rule v",v!=null?v.getTree():null);
					RewriteRuleSubtreeStream stream_exp=new RewriteRuleSubtreeStream(adaptor,"rule exp",exp!=null?exp.getTree():null);
					RewriteRuleSubtreeStream stream_n=new RewriteRuleSubtreeStream(adaptor,"rule n",n!=null?n.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 517:75: -> ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:78: ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, PutCache298), root_1);
						adaptor.addChild(root_1, stream_PutCache.nextNode());
						adaptor.addChild(root_1, stream_v.nextTree());
						adaptor.addChild(root_1, stream_n.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:117: ( $exp)?
						if ( stream_exp.hasNext() ) {
							adaptor.addChild(root_1, stream_exp.nextTree());
						}
						stream_exp.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 34 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:518:6: GetCache '(' n= expression ')'
					{
					GetCache303=(Token)match(input,GetCache,FOLLOW_GetCache_in_func22945); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GetCache.add(GetCache303);

					char_literal304=(Token)match(input,OParen,FOLLOW_OParen_in_func22947); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal304);

					pushFollow(FOLLOW_expression_in_func22951);
					n=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(n.getTree());
					char_literal305=(Token)match(input,CParen,FOLLOW_CParen_in_func22953); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal305);

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

					root_0 = (Object)adaptor.nil();
					// 518:36: -> ^( FUNC_CALL[$GetCache] GetCache $n)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:518:39: ^( FUNC_CALL[$GetCache] GetCache $n)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GetCache303), root_1);
						adaptor.addChild(root_1, stream_GetCache.nextNode());
						adaptor.addChild(root_1, stream_n.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 35 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:519:6: Json '(' expression ')'
					{
					Json306=(Token)match(input,Json,FOLLOW_Json_in_func22972); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Json.add(Json306);

					char_literal307=(Token)match(input,OParen,FOLLOW_OParen_in_func22974); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal307);

					pushFollow(FOLLOW_expression_in_func22976);
					expression308=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression308.getTree());
					char_literal309=(Token)match(input,CParen,FOLLOW_CParen_in_func22978); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal309);

					// AST REWRITE
					// elements: Json, 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 = (Object)adaptor.nil();
					// 519:35: -> ^( FUNC_CALL[$Json] Json expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:519:38: ^( FUNC_CALL[$Json] Json expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Json306), root_1);
						adaptor.addChild(root_1, stream_Json.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 36 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:521:6: FromJson '(' expression ')'
					{
					FromJson310=(Token)match(input,FromJson,FOLLOW_FromJson_in_func23002); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FromJson.add(FromJson310);

					char_literal311=(Token)match(input,OParen,FOLLOW_OParen_in_func23004); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal311);

					pushFollow(FOLLOW_expression_in_func23006);
					expression312=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression312.getTree());
					char_literal313=(Token)match(input,CParen,FOLLOW_CParen_in_func23008); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal313);

					// AST REWRITE
					// elements: expression, FromJson
					// 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 = (Object)adaptor.nil();
					// 521:35: -> ^( FUNC_CALL[$FromJson] FromJson expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:521:38: ^( FUNC_CALL[$FromJson] FromJson expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, FromJson310), root_1);
						adaptor.addChild(root_1, stream_FromJson.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 37 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:522:6: UrlEncode '(' expression ')'
					{
					UrlEncode314=(Token)match(input,UrlEncode,FOLLOW_UrlEncode_in_func23027); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UrlEncode.add(UrlEncode314);

					char_literal315=(Token)match(input,OParen,FOLLOW_OParen_in_func23029); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal315);

					pushFollow(FOLLOW_expression_in_func23031);
					expression316=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression316.getTree());
					char_literal317=(Token)match(input,CParen,FOLLOW_CParen_in_func23033); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal317);

					// AST REWRITE
					// elements: expression, UrlEncode
					// 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 = (Object)adaptor.nil();
					// 522:36: -> ^( FUNC_CALL[$UrlEncode] UrlEncode expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:522:39: ^( FUNC_CALL[$UrlEncode] UrlEncode expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, UrlEncode314), root_1);
						adaptor.addChild(root_1, stream_UrlEncode.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 38 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:523:6: UrlDecode '(' expression ')'
					{
					UrlDecode318=(Token)match(input,UrlDecode,FOLLOW_UrlDecode_in_func23052); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UrlDecode.add(UrlDecode318);

					char_literal319=(Token)match(input,OParen,FOLLOW_OParen_in_func23054); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal319);

					pushFollow(FOLLOW_expression_in_func23056);
					expression320=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression320.getTree());
					char_literal321=(Token)match(input,CParen,FOLLOW_CParen_in_func23058); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal321);

					// AST REWRITE
					// elements: expression, UrlDecode
					// 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 = (Object)adaptor.nil();
					// 523:36: -> ^( FUNC_CALL[$UrlDecode] UrlDecode expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:523:39: ^( FUNC_CALL[$UrlDecode] UrlDecode expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, UrlDecode318), root_1);
						adaptor.addChild(root_1, stream_UrlDecode.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 39 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:524:6: MD5 '(' expression ')'
					{
					MD5322=(Token)match(input,MD5,FOLLOW_MD5_in_func23077); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MD5.add(MD5322);

					char_literal323=(Token)match(input,OParen,FOLLOW_OParen_in_func23079); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal323);

					pushFollow(FOLLOW_expression_in_func23081);
					expression324=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression324.getTree());
					char_literal325=(Token)match(input,CParen,FOLLOW_CParen_in_func23083); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal325);

					// AST REWRITE
					// elements: expression, MD5
					// 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 = (Object)adaptor.nil();
					// 524:35: -> ^( FUNC_CALL[$MD5] MD5 expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:524:38: ^( FUNC_CALL[$MD5] MD5 expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MD5322), root_1);
						adaptor.addChild(root_1, stream_MD5.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 40 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:525:6: MapFn '(' Identifier ',' expression ')'
					{
					MapFn326=(Token)match(input,MapFn,FOLLOW_MapFn_in_func23107); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MapFn.add(MapFn326);

					char_literal327=(Token)match(input,OParen,FOLLOW_OParen_in_func23109); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal327);

					Identifier328=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23111); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier328);

					char_literal329=(Token)match(input,Comma,FOLLOW_Comma_in_func23113); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal329);

					pushFollow(FOLLOW_expression_in_func23115);
					expression330=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression330.getTree());
					char_literal331=(Token)match(input,CParen,FOLLOW_CParen_in_func23117); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal331);

					// AST REWRITE
					// elements: Identifier, expression, MapFn
					// 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 = (Object)adaptor.nil();
					// 525:46: -> ^( FUNC_CALL[$MapFn] MapFn Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:525:49: ^( FUNC_CALL[$MapFn] MapFn Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MapFn326), root_1);
						adaptor.addChild(root_1, stream_MapFn.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 41 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:526:6: FilterFn '(' Identifier ',' expression ')'
					{
					FilterFn332=(Token)match(input,FilterFn,FOLLOW_FilterFn_in_func23137); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FilterFn.add(FilterFn332);

					char_literal333=(Token)match(input,OParen,FOLLOW_OParen_in_func23139); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal333);

					Identifier334=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23141); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier334);

					char_literal335=(Token)match(input,Comma,FOLLOW_Comma_in_func23143); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal335);

					pushFollow(FOLLOW_expression_in_func23145);
					expression336=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression336.getTree());
					char_literal337=(Token)match(input,CParen,FOLLOW_CParen_in_func23147); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal337);

					// AST REWRITE
					// elements: FilterFn, Identifier, 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 = (Object)adaptor.nil();
					// 526:49: -> ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:526:52: ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, FilterFn332), root_1);
						adaptor.addChild(root_1, stream_FilterFn.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 42 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:527:6: Fold '(' Identifier ',' expression ',' expression ')'
					{
					Fold338=(Token)match(input,Fold,FOLLOW_Fold_in_func23167); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Fold.add(Fold338);

					char_literal339=(Token)match(input,OParen,FOLLOW_OParen_in_func23169); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal339);

					Identifier340=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23171); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier340);

					char_literal341=(Token)match(input,Comma,FOLLOW_Comma_in_func23173); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal341);

					pushFollow(FOLLOW_expression_in_func23175);
					expression342=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression342.getTree());
					char_literal343=(Token)match(input,Comma,FOLLOW_Comma_in_func23177); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal343);

					pushFollow(FOLLOW_expression_in_func23179);
					expression344=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression344.getTree());
					char_literal345=(Token)match(input,CParen,FOLLOW_CParen_in_func23181); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal345);

					// AST REWRITE
					// elements: expression, Identifier, Fold, 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 = (Object)adaptor.nil();
					// 527:60: -> ^( FUNC_CALL[$Fold] Fold Identifier expression expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:527:63: ^( FUNC_CALL[$Fold] Fold Identifier expression expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Fold338), root_1);
						adaptor.addChild(root_1, stream_Fold.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 43 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:528:6: Any '(' Identifier ',' expression ')'
					{
					Any346=(Token)match(input,Any,FOLLOW_Any_in_func23203); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Any.add(Any346);

					char_literal347=(Token)match(input,OParen,FOLLOW_OParen_in_func23205); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal347);

					Identifier348=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23207); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier348);

					char_literal349=(Token)match(input,Comma,FOLLOW_Comma_in_func23209); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal349);

					pushFollow(FOLLOW_expression_in_func23211);
					expression350=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression350.getTree());
					char_literal351=(Token)match(input,CParen,FOLLOW_CParen_in_func23213); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal351);

					// AST REWRITE
					// elements: Identifier, Any, 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 = (Object)adaptor.nil();
					// 528:44: -> ^( FUNC_CALL[$Any] Any Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:528:47: ^( FUNC_CALL[$Any] Any Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Any346), root_1);
						adaptor.addChild(root_1, stream_Any.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 44 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:529:6: All '(' Identifier ',' expression ')'
					{
					All352=(Token)match(input,All,FOLLOW_All_in_func23233); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_All.add(All352);

					char_literal353=(Token)match(input,OParen,FOLLOW_OParen_in_func23235); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal353);

					Identifier354=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23237); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier354);

					char_literal355=(Token)match(input,Comma,FOLLOW_Comma_in_func23239); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal355);

					pushFollow(FOLLOW_expression_in_func23241);
					expression356=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression356.getTree());
					char_literal357=(Token)match(input,CParen,FOLLOW_CParen_in_func23243); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal357);

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

					root_0 = (Object)adaptor.nil();
					// 529:44: -> ^( FUNC_CALL[$All] All Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:529:47: ^( FUNC_CALL[$All] All Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, All352), root_1);
						adaptor.addChild(root_1, stream_All.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 45 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:530:6: TakeWhile '(' Identifier ',' expression ')'
					{
					TakeWhile358=(Token)match(input,TakeWhile,FOLLOW_TakeWhile_in_func23263); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TakeWhile.add(TakeWhile358);

					char_literal359=(Token)match(input,OParen,FOLLOW_OParen_in_func23265); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal359);

					Identifier360=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23267); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier360);

					char_literal361=(Token)match(input,Comma,FOLLOW_Comma_in_func23269); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal361);

					pushFollow(FOLLOW_expression_in_func23271);
					expression362=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression362.getTree());
					char_literal363=(Token)match(input,CParen,FOLLOW_CParen_in_func23273); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal363);

					// AST REWRITE
					// elements: Identifier, expression, TakeWhile
					// 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 = (Object)adaptor.nil();
					// 530:50: -> ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:530:53: ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, TakeWhile358), root_1);
						adaptor.addChild(root_1, stream_TakeWhile.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 46 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:531:6: DropWhile '(' Identifier ',' expression ')'
					{
					DropWhile364=(Token)match(input,DropWhile,FOLLOW_DropWhile_in_func23293); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DropWhile.add(DropWhile364);

					char_literal365=(Token)match(input,OParen,FOLLOW_OParen_in_func23295); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal365);

					Identifier366=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23297); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier366);

					char_literal367=(Token)match(input,Comma,FOLLOW_Comma_in_func23299); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal367);

					pushFollow(FOLLOW_expression_in_func23301);
					expression368=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression368.getTree());
					char_literal369=(Token)match(input,CParen,FOLLOW_CParen_in_func23303); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal369);

					// AST REWRITE
					// elements: Identifier, DropWhile, 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 = (Object)adaptor.nil();
					// 531:50: -> ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:531:53: ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, DropWhile364), root_1);
						adaptor.addChild(root_1, stream_DropWhile.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 47 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:532:6: SplitWith '(' Identifier ',' expression ')'
					{
					SplitWith370=(Token)match(input,SplitWith,FOLLOW_SplitWith_in_func23323); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SplitWith.add(SplitWith370);

					char_literal371=(Token)match(input,OParen,FOLLOW_OParen_in_func23325); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal371);

					Identifier372=(Token)match(input,Identifier,FOLLOW_Identifier_in_func23327); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier372);

					char_literal373=(Token)match(input,Comma,FOLLOW_Comma_in_func23329); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal373);

					pushFollow(FOLLOW_expression_in_func23331);
					expression374=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression374.getTree());
					char_literal375=(Token)match(input,CParen,FOLLOW_CParen_in_func23333); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal375);

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

					root_0 = (Object)adaptor.nil();
					// 532:50: -> ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:532:53: ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, SplitWith370), root_1);
						adaptor.addChild(root_1, stream_SplitWith.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 48 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:533:6: Split '(' str= expression ',' sep= expression ',' quoter= expression ')'
					{
					Split376=(Token)match(input,Split,FOLLOW_Split_in_func23353); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Split.add(Split376);

					char_literal377=(Token)match(input,OParen,FOLLOW_OParen_in_func23355); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal377);

					pushFollow(FOLLOW_expression_in_func23359);
					str=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(str.getTree());
					char_literal378=(Token)match(input,Comma,FOLLOW_Comma_in_func23361); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal378);

					pushFollow(FOLLOW_expression_in_func23365);
					sep=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(sep.getTree());
					char_literal379=(Token)match(input,Comma,FOLLOW_Comma_in_func23367); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal379);

					pushFollow(FOLLOW_expression_in_func23371);
					quoter=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(quoter.getTree());
					char_literal380=(Token)match(input,CParen,FOLLOW_CParen_in_func23373); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal380);

					// AST REWRITE
					// elements: sep, quoter, str, Split
					// token labels: 
					// rule labels: str, quoter, retval, sep
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_str=new RewriteRuleSubtreeStream(adaptor,"rule str",str!=null?str.getTree():null);
					RewriteRuleSubtreeStream stream_quoter=new RewriteRuleSubtreeStream(adaptor,"rule quoter",quoter!=null?quoter.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_sep=new RewriteRuleSubtreeStream(adaptor,"rule sep",sep!=null?sep.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 533:76: -> ^( FUNC_CALL[$Split] Split $str $sep $quoter)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:533:79: ^( FUNC_CALL[$Split] Split $str $sep $quoter)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Split376), root_1);
						adaptor.addChild(root_1, stream_Split.nextNode());
						adaptor.addChild(root_1, stream_str.nextTree());
						adaptor.addChild(root_1, stream_sep.nextTree());
						adaptor.addChild(root_1, stream_quoter.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 49 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:534:6: Uuid '(' ')'
					{
					Uuid381=(Token)match(input,Uuid,FOLLOW_Uuid_in_func23398); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Uuid.add(Uuid381);

					char_literal382=(Token)match(input,OParen,FOLLOW_OParen_in_func23400); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal382);

					char_literal383=(Token)match(input,CParen,FOLLOW_CParen_in_func23402); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal383);

					// AST REWRITE
					// elements: Uuid
					// 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 = (Object)adaptor.nil();
					// 534:35: -> ^( FUNC_CALL[$Uuid] Uuid )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:534:38: ^( FUNC_CALL[$Uuid] Uuid )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Uuid381), root_1);
						adaptor.addChild(root_1, stream_Uuid.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 50 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:535:6: AsyncCall '(' s= expression ( ',' p= expression )? ')'
					{
					AsyncCall384=(Token)match(input,AsyncCall,FOLLOW_AsyncCall_in_func23434); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AsyncCall.add(AsyncCall384);

					char_literal385=(Token)match(input,OParen,FOLLOW_OParen_in_func23436); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal385);

					pushFollow(FOLLOW_expression_in_func23440);
					s=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(s.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:535:33: ( ',' p= expression )?
					int alt27=2;
					int LA27_0 = input.LA(1);
					if ( (LA27_0==Comma) ) {
						alt27=1;
					}
					switch (alt27) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:535:34: ',' p= expression
							{
							char_literal386=(Token)match(input,Comma,FOLLOW_Comma_in_func23443); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal386);

							pushFollow(FOLLOW_expression_in_func23447);
							p=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(p.getTree());
							}
							break;

					}

					char_literal387=(Token)match(input,CParen,FOLLOW_CParen_in_func23451); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal387);

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

					root_0 = (Object)adaptor.nil();
					// 536:35: -> ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:536:38: ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, AsyncCall384), root_1);
						adaptor.addChild(root_1, stream_AsyncCall.nextNode());
						adaptor.addChild(root_1, stream_s.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:536:76: ( $p)?
						if ( stream_p.hasNext() ) {
							adaptor.addChild(root_1, stream_p.nextTree());
						}
						stream_p.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 51 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:537:6: AsyncCallScript '(' r= expression ',' s= expression ( ',' p= expression )? ')'
					{
					AsyncCallScript388=(Token)match(input,AsyncCallScript,FOLLOW_AsyncCallScript_in_func23508); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AsyncCallScript.add(AsyncCallScript388);

					char_literal389=(Token)match(input,OParen,FOLLOW_OParen_in_func23510); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal389);

					pushFollow(FOLLOW_expression_in_func23514);
					r=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(r.getTree());
					char_literal390=(Token)match(input,Comma,FOLLOW_Comma_in_func23516); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal390);

					pushFollow(FOLLOW_expression_in_func23520);
					s=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(s.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:537:56: ( ',' p= expression )?
					int alt28=2;
					int LA28_0 = input.LA(1);
					if ( (LA28_0==Comma) ) {
						alt28=1;
					}
					switch (alt28) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:537:57: ',' p= expression
							{
							char_literal391=(Token)match(input,Comma,FOLLOW_Comma_in_func23523); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal391);

							pushFollow(FOLLOW_expression_in_func23527);
							p=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(p.getTree());
							}
							break;

					}

					char_literal392=(Token)match(input,CParen,FOLLOW_CParen_in_func23531); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal392);

					// AST REWRITE
					// elements: r, s, p, AsyncCallScript
					// token labels: 
					// rule labels: p, r, s, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);
					RewriteRuleSubtreeStream stream_r=new RewriteRuleSubtreeStream(adaptor,"rule r",r!=null?r.getTree():null);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 538:35: -> ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:538:38: ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, AsyncCallScript388), root_1);
						adaptor.addChild(root_1, stream_AsyncCallScript.nextNode());
						adaptor.addChild(root_1, stream_r.nextTree());
						adaptor.addChild(root_1, stream_s.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:538:91: ( $p)?
						if ( stream_p.hasNext() ) {
							adaptor.addChild(root_1, stream_p.nextTree());
						}
						stream_p.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 52 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:539:6: AsyncStatus '(' expression ')'
					{
					AsyncStatus393=(Token)match(input,AsyncStatus,FOLLOW_AsyncStatus_in_func23591); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AsyncStatus.add(AsyncStatus393);

					char_literal394=(Token)match(input,OParen,FOLLOW_OParen_in_func23593); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal394);

					pushFollow(FOLLOW_expression_in_func23595);
					expression395=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression395.getTree());
					char_literal396=(Token)match(input,CParen,FOLLOW_CParen_in_func23597); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal396);

					// AST REWRITE
					// elements: AsyncStatus, 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 = (Object)adaptor.nil();
					// 539:44: -> ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:539:47: ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, AsyncStatus393), root_1);
						adaptor.addChild(root_1, stream_AsyncStatus.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 53 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:540:6: SuspendWait '(' exprList ')'
					{
					SuspendWait397=(Token)match(input,SuspendWait,FOLLOW_SuspendWait_in_func23622); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SuspendWait.add(SuspendWait397);

					char_literal398=(Token)match(input,OParen,FOLLOW_OParen_in_func23624); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal398);

					pushFollow(FOLLOW_exprList_in_func23626);
					exprList399=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList399.getTree());
					char_literal400=(Token)match(input,CParen,FOLLOW_CParen_in_func23628); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal400);

					// AST REWRITE
					// elements: SuspendWait, exprList
					// 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 = (Object)adaptor.nil();
					// 540:36: -> ^( FUNC_CALL[$SuspendWait] SuspendWait exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:540:39: ^( FUNC_CALL[$SuspendWait] SuspendWait exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, SuspendWait397), root_1);
						adaptor.addChild(root_1, stream_SuspendWait.nextNode());
						adaptor.addChild(root_1, stream_exprList.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 54 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:541:6: Wait '(' d= expression ( ',' in= expression ',' re= expression )? ')'
					{
					Wait401=(Token)match(input,Wait,FOLLOW_Wait_in_func23647); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Wait.add(Wait401);

					char_literal402=(Token)match(input,OParen,FOLLOW_OParen_in_func23649); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal402);

					pushFollow(FOLLOW_expression_in_func23653);
					d=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(d.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:541:28: ( ',' in= expression ',' re= expression )?
					int alt29=2;
					int LA29_0 = input.LA(1);
					if ( (LA29_0==Comma) ) {
						alt29=1;
					}
					switch (alt29) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:541:29: ',' in= expression ',' re= expression
							{
							char_literal403=(Token)match(input,Comma,FOLLOW_Comma_in_func23656); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal403);

							pushFollow(FOLLOW_expression_in_func23660);
							in=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(in.getTree());
							char_literal404=(Token)match(input,Comma,FOLLOW_Comma_in_func23662); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal404);

							pushFollow(FOLLOW_expression_in_func23666);
							re=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(re.getTree());
							}
							break;

					}

					char_literal405=(Token)match(input,CParen,FOLLOW_CParen_in_func23670); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal405);

					// AST REWRITE
					// elements: re, Wait, d, in
					// token labels: 
					// rule labels: re, d, in, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_re=new RewriteRuleSubtreeStream(adaptor,"rule re",re!=null?re.getTree():null);
					RewriteRuleSubtreeStream stream_d=new RewriteRuleSubtreeStream(adaptor,"rule d",d!=null?d.getTree():null);
					RewriteRuleSubtreeStream stream_in=new RewriteRuleSubtreeStream(adaptor,"rule in",in!=null?in.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 542:35: -> ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:542:38: ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Wait401), root_1);
						adaptor.addChild(root_1, stream_Wait.nextNode());
						adaptor.addChild(root_1, stream_d.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:542:66: ( $in)?
						if ( stream_in.hasNext() ) {
							adaptor.addChild(root_1, stream_in.nextTree());
						}
						stream_in.reset();

						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:542:71: ( $re)?
						if ( stream_re.hasNext() ) {
							adaptor.addChild(root_1, stream_re.nextTree());
						}
						stream_re.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 55 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:543:6: Chain '(' s= expression ( ',' p= expression )? ')'
					{
					Chain406=(Token)match(input,Chain,FOLLOW_Chain_in_func23731); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Chain.add(Chain406);

					char_literal407=(Token)match(input,OParen,FOLLOW_OParen_in_func23733); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal407);

					pushFollow(FOLLOW_expression_in_func23737);
					s=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(s.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:543:29: ( ',' p= expression )?
					int alt30=2;
					int LA30_0 = input.LA(1);
					if ( (LA30_0==Comma) ) {
						alt30=1;
					}
					switch (alt30) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:543:30: ',' p= expression
							{
							char_literal408=(Token)match(input,Comma,FOLLOW_Comma_in_func23740); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal408);

							pushFollow(FOLLOW_expression_in_func23744);
							p=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(p.getTree());
							}
							break;

					}

					char_literal409=(Token)match(input,CParen,FOLLOW_CParen_in_func23748); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal409);

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

					root_0 = (Object)adaptor.nil();
					// 544:35: -> ^( FUNC_CALL[$Chain] Chain $s ( $p)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:544:38: ^( FUNC_CALL[$Chain] Chain $s ( $p)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Chain406), root_1);
						adaptor.addChild(root_1, stream_Chain.nextNode());
						adaptor.addChild(root_1, stream_s.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:544:68: ( $p)?
						if ( stream_p.hasNext() ) {
							adaptor.addChild(root_1, stream_p.nextTree());
						}
						stream_p.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 56 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:545:6: Signal '(' d= expression ',' v= expression ')'
					{
					Signal410=(Token)match(input,Signal,FOLLOW_Signal_in_func23805); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Signal.add(Signal410);

					char_literal411=(Token)match(input,OParen,FOLLOW_OParen_in_func23807); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal411);

					pushFollow(FOLLOW_expression_in_func23811);
					d=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(d.getTree());
					char_literal412=(Token)match(input,Comma,FOLLOW_Comma_in_func23813); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal412);

					pushFollow(FOLLOW_expression_in_func23817);
					v=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(v.getTree());
					char_literal413=(Token)match(input,CParen,FOLLOW_CParen_in_func23819); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal413);

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

					root_0 = (Object)adaptor.nil();
					// 546:35: -> ^( FUNC_CALL[$Signal] Signal $d $v)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:546:38: ^( FUNC_CALL[$Signal] Signal $d $v)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Signal410), root_1);
						adaptor.addChild(root_1, stream_Signal.nextNode());
						adaptor.addChild(root_1, stream_d.nextTree());
						adaptor.addChild(root_1, stream_v.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 57 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:547:6: Sleep '(' expression ')'
					{
					Sleep414=(Token)match(input,Sleep,FOLLOW_Sleep_in_func23875); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Sleep.add(Sleep414);

					char_literal415=(Token)match(input,OParen,FOLLOW_OParen_in_func23878); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal415);

					pushFollow(FOLLOW_expression_in_func23880);
					expression416=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression416.getTree());
					char_literal417=(Token)match(input,CParen,FOLLOW_CParen_in_func23882); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal417);

					// AST REWRITE
					// elements: Sleep, 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 = (Object)adaptor.nil();
					// 547:35: -> ^( FUNC_CALL[$Sleep] Sleep expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:547:38: ^( FUNC_CALL[$Sleep] Sleep expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Sleep414), root_1);
						adaptor.addChild(root_1, stream_Sleep.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 58 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:548:6: Matches '(' s= expression ',' r= expression ')'
					{
					Matches418=(Token)match(input,Matches,FOLLOW_Matches_in_func23903); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Matches.add(Matches418);

					char_literal419=(Token)match(input,OParen,FOLLOW_OParen_in_func23905); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal419);

					pushFollow(FOLLOW_expression_in_func23909);
					s=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(s.getTree());
					char_literal420=(Token)match(input,Comma,FOLLOW_Comma_in_func23911); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal420);

					pushFollow(FOLLOW_expression_in_func23915);
					r=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(r.getTree());
					char_literal421=(Token)match(input,CParen,FOLLOW_CParen_in_func23917); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal421);

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

					root_0 = (Object)adaptor.nil();
					// 548:52: -> ^( FUNC_CALL[$Matches] Matches $s $r)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:548:55: ^( FUNC_CALL[$Matches] Matches $s $r)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Matches418), root_1);
						adaptor.addChild(root_1, stream_Matches.nextNode());
						adaptor.addChild(root_1, stream_s.nextTree());
						adaptor.addChild(root_1, stream_r.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 59 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:549:6: Rand '(' expression ')'
					{
					Rand422=(Token)match(input,Rand,FOLLOW_Rand_in_func23939); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Rand.add(Rand422);

					char_literal423=(Token)match(input,OParen,FOLLOW_OParen_in_func23943); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal423);

					pushFollow(FOLLOW_expression_in_func23945);
					expression424=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression424.getTree());
					char_literal425=(Token)match(input,CParen,FOLLOW_CParen_in_func23947); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal425);

					// AST REWRITE
					// elements: expression, Rand
					// 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 = (Object)adaptor.nil();
					// 549:35: -> ^( FUNC_CALL[$Rand] Rand expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:549:38: ^( FUNC_CALL[$Rand] Rand expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Rand422), root_1);
						adaptor.addChild(root_1, stream_Rand.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 60 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:550:6: Spawn '(' p= expression ( ',' ex= expression ',' f= expression )? ')'
					{
					Spawn426=(Token)match(input,Spawn,FOLLOW_Spawn_in_func23968); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Spawn.add(Spawn426);

					char_literal427=(Token)match(input,OParen,FOLLOW_OParen_in_func23970); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal427);

					pushFollow(FOLLOW_expression_in_func23974);
					p=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(p.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:550:29: ( ',' ex= expression ',' f= expression )?
					int alt31=2;
					int LA31_0 = input.LA(1);
					if ( (LA31_0==Comma) ) {
						alt31=1;
					}
					switch (alt31) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:550:30: ',' ex= expression ',' f= expression
							{
							char_literal428=(Token)match(input,Comma,FOLLOW_Comma_in_func23977); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal428);

							pushFollow(FOLLOW_expression_in_func23981);
							ex=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(ex.getTree());
							char_literal429=(Token)match(input,Comma,FOLLOW_Comma_in_func23983); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal429);

							pushFollow(FOLLOW_expression_in_func23987);
							f=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(f.getTree());
							}
							break;

					}

					char_literal430=(Token)match(input,CParen,FOLLOW_CParen_in_func23991); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal430);

					// AST REWRITE
					// elements: p, f, ex, Spawn
					// token labels: 
					// rule labels: p, ex, f, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);
					RewriteRuleSubtreeStream stream_ex=new RewriteRuleSubtreeStream(adaptor,"rule ex",ex!=null?ex.getTree():null);
					RewriteRuleSubtreeStream stream_f=new RewriteRuleSubtreeStream(adaptor,"rule f",f!=null?f.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 551:35: -> ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:551:38: ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Spawn426), root_1);
						adaptor.addChild(root_1, stream_Spawn.nextNode());
						adaptor.addChild(root_1, stream_p.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:551:68: ( $ex)?
						if ( stream_ex.hasNext() ) {
							adaptor.addChild(root_1, stream_ex.nextTree());
						}
						stream_ex.reset();

						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:551:73: ( $f)?
						if ( stream_f.hasNext() ) {
							adaptor.addChild(root_1, stream_f.nextTree());
						}
						stream_f.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 61 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:552:6: Defined '(' Identifier ')'
					{
					Defined431=(Token)match(input,Defined,FOLLOW_Defined_in_func24052); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Defined.add(Defined431);

					char_literal432=(Token)match(input,OParen,FOLLOW_OParen_in_func24054); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal432);

					Identifier433=(Token)match(input,Identifier,FOLLOW_Identifier_in_func24056); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier433);

					char_literal434=(Token)match(input,CParen,FOLLOW_CParen_in_func24058); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal434);

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

					root_0 = (Object)adaptor.nil();
					// 552:35: -> ^( FUNC_CALL[$Defined] Defined Identifier )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:552:38: ^( FUNC_CALL[$Defined] Defined Identifier )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Defined431), root_1);
						adaptor.addChild(root_1, stream_Defined.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 62 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:553:6: Defined '(' lookup ')'
					{
					Defined435=(Token)match(input,Defined,FOLLOW_Defined_in_func24078); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Defined.add(Defined435);

					char_literal436=(Token)match(input,OParen,FOLLOW_OParen_in_func24080); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal436);

					pushFollow(FOLLOW_lookup_in_func24082);
					lookup437=lookup();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_lookup.add(lookup437.getTree());
					char_literal438=(Token)match(input,CParen,FOLLOW_CParen_in_func24084); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal438);

					// AST REWRITE
					// elements: lookup, Defined
					// 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 = (Object)adaptor.nil();
					// 553:31: -> ^( FUNC_CALL[$Defined] Defined lookup )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:553:34: ^( FUNC_CALL[$Defined] Defined lookup )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Defined435), root_1);
						adaptor.addChild(root_1, stream_Defined.nextNode());
						adaptor.addChild(root_1, stream_lookup.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 63 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:554:6: Round '(' v= expression ( ',' dp= expression )? ')'
					{
					Round439=(Token)match(input,Round,FOLLOW_Round_in_func24104); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Round.add(Round439);

					char_literal440=(Token)match(input,OParen,FOLLOW_OParen_in_func24106); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal440);

					pushFollow(FOLLOW_expression_in_func24110);
					v=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(v.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:554:29: ( ',' dp= expression )?
					int alt32=2;
					int LA32_0 = input.LA(1);
					if ( (LA32_0==Comma) ) {
						alt32=1;
					}
					switch (alt32) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:554:30: ',' dp= expression
							{
							char_literal441=(Token)match(input,Comma,FOLLOW_Comma_in_func24113); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal441);

							pushFollow(FOLLOW_expression_in_func24117);
							dp=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(dp.getTree());
							}
							break;

					}

					char_literal442=(Token)match(input,CParen,FOLLOW_CParen_in_func24121); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal442);

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

					root_0 = (Object)adaptor.nil();
					// 555:35: -> ^( FUNC_CALL[$Round] Round $v ( $dp)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:555:38: ^( FUNC_CALL[$Round] Round $v ( $dp)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Round439), root_1);
						adaptor.addChild(root_1, stream_Round.nextNode());
						adaptor.addChild(root_1, stream_v.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:555:68: ( $dp)?
						if ( stream_dp.hasNext() ) {
							adaptor.addChild(root_1, stream_dp.nextTree());
						}
						stream_dp.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 64 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:556:6: Lib '(' expression ')'
					{
					Lib443=(Token)match(input,Lib,FOLLOW_Lib_in_func24178); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Lib.add(Lib443);

					char_literal444=(Token)match(input,OParen,FOLLOW_OParen_in_func24182); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal444);

					pushFollow(FOLLOW_expression_in_func24184);
					expression445=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression445.getTree());
					char_literal446=(Token)match(input,CParen,FOLLOW_CParen_in_func24186); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal446);

					// AST REWRITE
					// elements: Lib, 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 = (Object)adaptor.nil();
					// 556:35: -> ^( FUNC_CALL[$Lib] Lib expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:556:38: ^( FUNC_CALL[$Lib] Lib expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Lib443), root_1);
						adaptor.addChild(root_1, stream_Lib.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 65 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:557:6: Call '(' a= expression ',' b= expression ',' c= expression ')'
					{
					Call447=(Token)match(input,Call,FOLLOW_Call_in_func24208); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Call.add(Call447);

					char_literal448=(Token)match(input,OParen,FOLLOW_OParen_in_func24211); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal448);

					pushFollow(FOLLOW_expression_in_func24215);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal449=(Token)match(input,Comma,FOLLOW_Comma_in_func24217); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal449);

					pushFollow(FOLLOW_expression_in_func24221);
					b=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(b.getTree());
					char_literal450=(Token)match(input,Comma,FOLLOW_Comma_in_func24223); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal450);

					pushFollow(FOLLOW_expression_in_func24227);
					c=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(c.getTree());
					char_literal451=(Token)match(input,CParen,FOLLOW_CParen_in_func24229); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal451);

					// AST REWRITE
					// elements: a, Call, b, c
					// token labels: 
					// rule labels: a, b, c, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);
					RewriteRuleSubtreeStream stream_b=new RewriteRuleSubtreeStream(adaptor,"rule b",b!=null?b.getTree():null);
					RewriteRuleSubtreeStream stream_c=new RewriteRuleSubtreeStream(adaptor,"rule c",c!=null?c.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 558:35: -> ^( FUNC_CALL[$Call] Call $a $b $c)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:558:38: ^( FUNC_CALL[$Call] Call $a $b $c)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Call447), root_1);
						adaptor.addChild(root_1, stream_Call.nextNode());
						adaptor.addChild(root_1, stream_a.nextTree());
						adaptor.addChild(root_1, stream_b.nextTree());
						adaptor.addChild(root_1, stream_c.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 66 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:559:6: New '(' a= expression ')'
					{
					New452=(Token)match(input,New,FOLLOW_New_in_func24288); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_New.add(New452);

					char_literal453=(Token)match(input,OParen,FOLLOW_OParen_in_func24292); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal453);

					pushFollow(FOLLOW_expression_in_func24296);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal454=(Token)match(input,CParen,FOLLOW_CParen_in_func24298); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal454);

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

					root_0 = (Object)adaptor.nil();
					// 560:35: -> ^( FUNC_CALL[$New] New $a)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:560:38: ^( FUNC_CALL[$New] New $a)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, New452), root_1);
						adaptor.addChild(root_1, stream_New.nextNode());
						adaptor.addChild(root_1, stream_a.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 67 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:561:6: GenSchema '(' a= expression ')'
					{
					GenSchema455=(Token)match(input,GenSchema,FOLLOW_GenSchema_in_func24351); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GenSchema.add(GenSchema455);

					char_literal456=(Token)match(input,OParen,FOLLOW_OParen_in_func24353); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal456);

					pushFollow(FOLLOW_expression_in_func24357);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal457=(Token)match(input,CParen,FOLLOW_CParen_in_func24359); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal457);

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

					root_0 = (Object)adaptor.nil();
					// 562:35: -> ^( FUNC_CALL[$GenSchema] GenSchema $a)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:562:38: ^( FUNC_CALL[$GenSchema] GenSchema $a)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GenSchema455), root_1);
						adaptor.addChild(root_1, stream_GenSchema.nextNode());
						adaptor.addChild(root_1, stream_a.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 68 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:563:6: GenStruct '(' Identifier ',' b= expression ')'
					{
					GenStruct458=(Token)match(input,GenStruct,FOLLOW_GenStruct_in_func24412); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GenStruct.add(GenStruct458);

					char_literal459=(Token)match(input,OParen,FOLLOW_OParen_in_func24414); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal459);

					Identifier460=(Token)match(input,Identifier,FOLLOW_Identifier_in_func24416); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier460);

					char_literal461=(Token)match(input,Comma,FOLLOW_Comma_in_func24418); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal461);

					pushFollow(FOLLOW_expression_in_func24422);
					b=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(b.getTree());
					char_literal462=(Token)match(input,CParen,FOLLOW_CParen_in_func24424); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal462);

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

					root_0 = (Object)adaptor.nil();
					// 564:35: -> ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:564:38: ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GenStruct458), root_1);
						adaptor.addChild(root_1, stream_GenStruct.nextNode());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_b.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 69 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:565:6: Template '(' t= expression ',' p= expression ')'
					{
					Template463=(Token)match(input,Template,FOLLOW_Template_in_func24479); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Template.add(Template463);

					char_literal464=(Token)match(input,OParen,FOLLOW_OParen_in_func24481); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal464);

					pushFollow(FOLLOW_expression_in_func24485);
					t=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(t.getTree());
					char_literal465=(Token)match(input,Comma,FOLLOW_Comma_in_func24487); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal465);

					pushFollow(FOLLOW_expression_in_func24491);
					p=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(p.getTree());
					char_literal466=(Token)match(input,CParen,FOLLOW_CParen_in_func24493); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal466);

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

					root_0 = (Object)adaptor.nil();
					// 566:35: -> ^( FUNC_CALL[$Template] Template $t $p)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:566:38: ^( FUNC_CALL[$Template] Template $t $p)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Template463), root_1);
						adaptor.addChild(root_1, stream_Template.nextNode());
						adaptor.addChild(root_1, stream_t.nextTree());
						adaptor.addChild(root_1, stream_p.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 70 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:567:6: KernelIdentifier '(' ( exprList )? ')'
					{
					KernelIdentifier467=(Token)match(input,KernelIdentifier,FOLLOW_KernelIdentifier_in_func24549); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_KernelIdentifier.add(KernelIdentifier467);

					char_literal468=(Token)match(input,OParen,FOLLOW_OParen_in_func24551); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal468);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:567:27: ( exprList )?
					int alt33=2;
					int LA33_0 = input.LA(1);
					if ( (LA33_0==All||(LA33_0 >= Any && LA33_0 <= Archive)||LA33_0==Assert||(LA33_0 >= AsyncCall && LA33_0 <= AsyncCallScript)||(LA33_0 >= AsyncStatus && LA33_0 <= B64Decompress)||LA33_0==Bool||(LA33_0 >= Call && LA33_0 <= Capabilities)||LA33_0==Cast||(LA33_0 >= Chain && LA33_0 <= Collate)||LA33_0==Copy||(LA33_0 >= Date && LA33_0 <= Debug)||(LA33_0 >= Defined && LA33_0 <= Difference)||LA33_0==DottedIdentifier||LA33_0==DropWhile||(LA33_0 >= Evals && LA33_0 <= Excl)||(LA33_0 >= File && LA33_0 <= Fold)||(LA33_0 >= Format && LA33_0 <= FromJson)||(LA33_0 >= GenSchema && LA33_0 <= HasCapability)||LA33_0==Identifier||LA33_0==Integer||(LA33_0 >= IsFile && LA33_0 <= IsFolder)||(LA33_0 >= Join && LA33_0 <= Json)||(LA33_0 >= KernelIdentifier && LA33_0 <= Keys)||(LA33_0 >= Lib && LA33_0 <= Long)||LA33_0==MD5||LA33_0==MapFn||(LA33_0 >= Matches && LA33_0 <= MkDir)||(LA33_0 >= New && LA33_0 <= OParen)||LA33_0==PackageIdentifier||LA33_0==Port||(LA33_0 >= Print && LA33_0 <= PropertyPlaceholder)||LA33_0==PutCache||LA33_0==QuotedString||(LA33_0 >= RPull && LA33_0 <= Replace)||LA33_0==Round||LA33_0==Signal||(LA33_0 >= Size && LA33_0 <= Sort)||(LA33_0 >= Spawn && LA33_0 <= String)||(LA33_0 >= Subtract && LA33_0 <= SuspendWait)||(LA33_0 >= TakeWhile && LA33_0 <= Template)||(LA33_0 >= Time && LA33_0 <= Timer)||LA33_0==Transpose||LA33_0==TypeOf||LA33_0==Unique||(LA33_0 >= UrlDecode && LA33_0 <= UrlEncode)||(LA33_0 >= Uuid && LA33_0 <= Wait)) ) {
						alt33=1;
					}
					switch (alt33) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:567:27: exprList
							{
							pushFollow(FOLLOW_exprList_in_func24553);
							exprList469=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList469.getTree());
							}
							break;

					}

					char_literal470=(Token)match(input,CParen,FOLLOW_CParen_in_func24556); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal470);

					// AST REWRITE
					// elements: KernelIdentifier, exprList
					// 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 = (Object)adaptor.nil();
					// 568:35: -> ^( KernelIdentifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:568:38: ^( KernelIdentifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(token("KERNEL_CALL", KERNEL_CALL, KernelIdentifier467.getLine()), root_1);
						adaptor.addChild(root_1, stream_KernelIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:568:122: ( exprList )?
						if ( stream_exprList.hasNext() ) {
							adaptor.addChild(root_1, stream_exprList.nextTree());
						}
						stream_exprList.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "func2"


	public static class matchStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "matchStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:573:1: matchStatement : Match expression ( As Identifier )? Do ( actions )* ( otherwise )? End -> MATCH ( Identifier )? expression ( actions )* ( otherwise )? ;
	public final ReflexParser.matchStatement_return matchStatement() throws RecognitionException {
		ReflexParser.matchStatement_return retval = new ReflexParser.matchStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Match471=null;
		Token As473=null;
		Token Identifier474=null;
		Token Do475=null;
		Token End478=null;
		ParserRuleReturnScope expression472 =null;
		ParserRuleReturnScope actions476 =null;
		ParserRuleReturnScope otherwise477 =null;

		Object Match471_tree=null;
		Object As473_tree=null;
		Object Identifier474_tree=null;
		Object Do475_tree=null;
		Object End478_tree=null;
		RewriteRuleTokenStream stream_As=new RewriteRuleTokenStream(adaptor,"token As");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_Match=new RewriteRuleTokenStream(adaptor,"token Match");
		RewriteRuleSubtreeStream stream_otherwise=new RewriteRuleSubtreeStream(adaptor,"rule otherwise");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_actions=new RewriteRuleSubtreeStream(adaptor,"rule actions");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:3: ( Match expression ( As Identifier )? Do ( actions )* ( otherwise )? End -> MATCH ( Identifier )? expression ( actions )* ( otherwise )? )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:6: Match expression ( As Identifier )? Do ( actions )* ( otherwise )? End
			{
			Match471=(Token)match(input,Match,FOLLOW_Match_in_matchStatement4617); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Match.add(Match471);

			pushFollow(FOLLOW_expression_in_matchStatement4619);
			expression472=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression472.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:23: ( As Identifier )?
			int alt35=2;
			int LA35_0 = input.LA(1);
			if ( (LA35_0==As) ) {
				alt35=1;
			}
			switch (alt35) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:24: As Identifier
					{
					As473=(Token)match(input,As,FOLLOW_As_in_matchStatement4622); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_As.add(As473);

					Identifier474=(Token)match(input,Identifier,FOLLOW_Identifier_in_matchStatement4624); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier474);

					}
					break;

			}

			Do475=(Token)match(input,Do,FOLLOW_Do_in_matchStatement4628); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Do.add(Do475);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:43: ( actions )*
			loop36:
			while (true) {
				int alt36=2;
				int LA36_0 = input.LA(1);
				if ( (LA36_0==Is) ) {
					alt36=1;
				}

				switch (alt36) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:43: actions
					{
					pushFollow(FOLLOW_actions_in_matchStatement4630);
					actions476=actions();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_actions.add(actions476.getTree());
					}
					break;

				default :
					break loop36;
				}
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:52: ( otherwise )?
			int alt37=2;
			int LA37_0 = input.LA(1);
			if ( (LA37_0==Otherwise) ) {
				alt37=1;
			}
			switch (alt37) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:52: otherwise
					{
					pushFollow(FOLLOW_otherwise_in_matchStatement4633);
					otherwise477=otherwise();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_otherwise.add(otherwise477.getTree());
					}
					break;

			}

			End478=(Token)match(input,End,FOLLOW_End_in_matchStatement4636); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End478);

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

			root_0 = (Object)adaptor.nil();
			// 574:67: -> MATCH ( Identifier )? expression ( actions )* ( otherwise )?
			{
				adaptor.addChild(root_0, (Object)adaptor.create(MATCH, "MATCH"));
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:76: ( Identifier )?
				if ( stream_Identifier.hasNext() ) {
					adaptor.addChild(root_0, stream_Identifier.nextNode());
				}
				stream_Identifier.reset();

				adaptor.addChild(root_0, stream_expression.nextTree());
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:99: ( actions )*
				while ( stream_actions.hasNext() ) {
					adaptor.addChild(root_0, stream_actions.nextTree());
				}
				stream_actions.reset();

				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:108: ( otherwise )?
				if ( stream_otherwise.hasNext() ) {
					adaptor.addChild(root_0, stream_otherwise.nextTree());
				}
				stream_otherwise.reset();

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "matchStatement"


	public static class actions_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "actions"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:577:1: actions : ( comparator )+ Do block End -> ( comparator )+ block ;
	public final ReflexParser.actions_return actions() throws RecognitionException {
		ReflexParser.actions_return retval = new ReflexParser.actions_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Do480=null;
		Token End482=null;
		ParserRuleReturnScope comparator479 =null;
		ParserRuleReturnScope block481 =null;

		Object Do480_tree=null;
		Object End482_tree=null;
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleSubtreeStream stream_comparator=new RewriteRuleSubtreeStream(adaptor,"rule comparator");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:3: ( ( comparator )+ Do block End -> ( comparator )+ block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:5: ( comparator )+ Do block End
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:5: ( comparator )+
			int cnt38=0;
			loop38:
			while (true) {
				int alt38=2;
				int LA38_0 = input.LA(1);
				if ( (LA38_0==Is) ) {
					alt38=1;
				}

				switch (alt38) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:5: comparator
					{
					pushFollow(FOLLOW_comparator_in_actions4666);
					comparator479=comparator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_comparator.add(comparator479.getTree());
					}
					break;

				default :
					if ( cnt38 >= 1 ) break loop38;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(38, input);
					throw eee;
				}
				cnt38++;
			}

			Do480=(Token)match(input,Do,FOLLOW_Do_in_actions4669); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Do.add(Do480);

			pushFollow(FOLLOW_block_in_actions4671);
			block481=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block481.getTree());
			End482=(Token)match(input,End,FOLLOW_End_in_actions4673); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End482);

			// AST REWRITE
			// elements: comparator, block
			// 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 = (Object)adaptor.nil();
			// 578:30: -> ( comparator )+ block
			{
				if ( !(stream_comparator.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_comparator.hasNext() ) {
					adaptor.addChild(root_0, stream_comparator.nextTree());
				}
				stream_comparator.reset();

				adaptor.addChild(root_0, stream_block.nextTree());
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "actions"


	public static class otherwise_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "otherwise"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:581:1: otherwise : Otherwise Do block End -> OTHERWISE block ;
	public final ReflexParser.otherwise_return otherwise() throws RecognitionException {
		ReflexParser.otherwise_return retval = new ReflexParser.otherwise_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Otherwise483=null;
		Token Do484=null;
		Token End486=null;
		ParserRuleReturnScope block485 =null;

		Object Otherwise483_tree=null;
		Object Do484_tree=null;
		Object End486_tree=null;
		RewriteRuleTokenStream stream_Otherwise=new RewriteRuleTokenStream(adaptor,"token Otherwise");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:582:3: ( Otherwise Do block End -> OTHERWISE block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:582:5: Otherwise Do block End
			{
			Otherwise483=(Token)match(input,Otherwise,FOLLOW_Otherwise_in_otherwise4693); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Otherwise.add(Otherwise483);

			Do484=(Token)match(input,Do,FOLLOW_Do_in_otherwise4695); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Do.add(Do484);

			pushFollow(FOLLOW_block_in_otherwise4697);
			block485=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block485.getTree());
			End486=(Token)match(input,End,FOLLOW_End_in_otherwise4699); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End486);

			// AST REWRITE
			// elements: block
			// 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 = (Object)adaptor.nil();
			// 582:28: -> OTHERWISE block
			{
				adaptor.addChild(root_0, (Object)adaptor.create(OTHERWISE, "OTHERWISE"));
				adaptor.addChild(root_0, stream_block.nextTree());
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "otherwise"


	public static class comparator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "comparator"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:585:1: comparator : ( Is ( Equals | NEquals | GTEquals | LTEquals | GT | LT ) expression | Is Assign expression | Is ( Or | And | Excl | Add | Subtract | Multiply | Divide | Modulus ) expression );
	public final ReflexParser.comparator_return comparator() throws RecognitionException {
		ReflexParser.comparator_return retval = new ReflexParser.comparator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Is487=null;
		Token set488=null;
		Token Is490=null;
		Token Assign491=null;
		Token Is493=null;
		Token set494=null;
		ParserRuleReturnScope expression489 =null;
		ParserRuleReturnScope expression492 =null;
		ParserRuleReturnScope expression495 =null;

		Object Is487_tree=null;
		Object set488_tree=null;
		Object Is490_tree=null;
		Object Assign491_tree=null;
		Object Is493_tree=null;
		Object set494_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:586:3: ( Is ( Equals | NEquals | GTEquals | LTEquals | GT | LT ) expression | Is Assign expression | Is ( Or | And | Excl | Add | Subtract | Multiply | Divide | Modulus ) expression )
			int alt39=3;
			int LA39_0 = input.LA(1);
			if ( (LA39_0==Is) ) {
				switch ( input.LA(2) ) {
				case Equals:
				case GT:
				case GTEquals:
				case LT:
				case LTEquals:
				case NEquals:
					{
					alt39=1;
					}
					break;
				case Assign:
					{
					alt39=2;
					}
					break;
				case Add:
				case And:
				case Divide:
				case Excl:
				case Modulus:
				case Multiply:
				case Or:
				case Subtract:
					{
					alt39=3;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 39, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
			}

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

			switch (alt39) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:586:5: Is ( Equals | NEquals | GTEquals | LTEquals | GT | LT ) expression
					{
					root_0 = (Object)adaptor.nil();


					Is487=(Token)match(input,Is,FOLLOW_Is_in_comparator4719); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Is487_tree = (Object)adaptor.create(Is487);
					adaptor.addChild(root_0, Is487_tree);
					}

					set488=input.LT(1);
					if ( input.LA(1)==Equals||(input.LA(1) >= GT && input.LA(1) <= GTEquals)||(input.LA(1) >= LT && input.LA(1) <= LTEquals)||input.LA(1)==NEquals ) {
						input.consume();
						if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set488));
						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_expression_in_comparator4745);
					expression489=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression489.getTree());

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:587:5: Is Assign expression
					{
					root_0 = (Object)adaptor.nil();


					Is490=(Token)match(input,Is,FOLLOW_Is_in_comparator4751); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Is490_tree = (Object)adaptor.create(Is490);
					adaptor.addChild(root_0, Is490_tree);
					}

					Assign491=(Token)match(input,Assign,FOLLOW_Assign_in_comparator4753); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Assign491_tree = (Object)adaptor.create(Assign491);
					adaptor.addChild(root_0, Assign491_tree);
					}

					if ( state.backtracking==0 ) { error("Assignment found where comparator expected", input, Is490); }
					pushFollow(FOLLOW_expression_in_comparator4757);
					expression492=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression492.getTree());

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:588:5: Is ( Or | And | Excl | Add | Subtract | Multiply | Divide | Modulus ) expression
					{
					root_0 = (Object)adaptor.nil();


					Is493=(Token)match(input,Is,FOLLOW_Is_in_comparator4764); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Is493_tree = (Object)adaptor.create(Is493);
					adaptor.addChild(root_0, Is493_tree);
					}

					set494=input.LT(1);
					if ( input.LA(1)==Add||input.LA(1)==And||input.LA(1)==Divide||input.LA(1)==Excl||(input.LA(1) >= Modulus && input.LA(1) <= Multiply)||input.LA(1)==Or||input.LA(1)==Subtract ) {
						input.consume();
						if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set494));
						state.errorRecovery=false;
						state.failed=false;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						MismatchedSetException mse = new MismatchedSetException(null,input);
						throw mse;
					}
					if ( state.backtracking==0 ) { error("Comparator expected", input, Is493); }
					pushFollow(FOLLOW_expression_in_comparator4800);
					expression495=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, expression495.getTree());

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "comparator"


	public static class switchStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "switchStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:1: switchStatement : Switch expression Do ( caseStatement )+ End -> SWITCH expression ( caseStatement )+ ;
	public final ReflexParser.switchStatement_return switchStatement() throws RecognitionException {
		ReflexParser.switchStatement_return retval = new ReflexParser.switchStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Switch496=null;
		Token Do498=null;
		Token End500=null;
		ParserRuleReturnScope expression497 =null;
		ParserRuleReturnScope caseStatement499 =null;

		Object Switch496_tree=null;
		Object Do498_tree=null;
		Object End500_tree=null;
		RewriteRuleTokenStream stream_Switch=new RewriteRuleTokenStream(adaptor,"token Switch");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_caseStatement=new RewriteRuleSubtreeStream(adaptor,"rule caseStatement");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:594:3: ( Switch expression Do ( caseStatement )+ End -> SWITCH expression ( caseStatement )+ )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:594:6: Switch expression Do ( caseStatement )+ End
			{
			Switch496=(Token)match(input,Switch,FOLLOW_Switch_in_switchStatement4817); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Switch.add(Switch496);

			pushFollow(FOLLOW_expression_in_switchStatement4819);
			expression497=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression497.getTree());
			Do498=(Token)match(input,Do,FOLLOW_Do_in_switchStatement4821); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Do.add(Do498);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:594:27: ( caseStatement )+
			int cnt40=0;
			loop40:
			while (true) {
				int alt40=2;
				int LA40_0 = input.LA(1);
				if ( (LA40_0==All||(LA40_0 >= Any && LA40_0 <= Archive)||LA40_0==Assert||(LA40_0 >= AsyncCall && LA40_0 <= AsyncCallScript)||(LA40_0 >= AsyncStatus && LA40_0 <= B64Decompress)||LA40_0==Bool||(LA40_0 >= Call && LA40_0 <= Cast)||(LA40_0 >= Chain && LA40_0 <= Collate)||LA40_0==Copy||(LA40_0 >= Date && LA40_0 <= Debug)||(LA40_0 >= Default && LA40_0 <= Difference)||LA40_0==DottedIdentifier||LA40_0==DropWhile||(LA40_0 >= Evals && LA40_0 <= Excl)||(LA40_0 >= File && LA40_0 <= Fold)||(LA40_0 >= Format && LA40_0 <= FromJson)||(LA40_0 >= GenSchema && LA40_0 <= HasCapability)||LA40_0==Identifier||LA40_0==Integer||(LA40_0 >= IsFile && LA40_0 <= IsFolder)||(LA40_0 >= Join && LA40_0 <= Json)||(LA40_0 >= KernelIdentifier && LA40_0 <= Keys)||(LA40_0 >= Lib && LA40_0 <= Long)||LA40_0==MD5||LA40_0==MapFn||(LA40_0 >= Matches && LA40_0 <= MkDir)||(LA40_0 >= New && LA40_0 <= OParen)||LA40_0==PackageIdentifier||LA40_0==Port||(LA40_0 >= Print && LA40_0 <= PropertyPlaceholder)||LA40_0==PutCache||LA40_0==QuotedString||(LA40_0 >= RPull && LA40_0 <= Replace)||LA40_0==Round||LA40_0==Signal||(LA40_0 >= Size && LA40_0 <= Sort)||(LA40_0 >= Spawn && LA40_0 <= String)||(LA40_0 >= Subtract && LA40_0 <= SuspendWait)||(LA40_0 >= TakeWhile && LA40_0 <= Template)||(LA40_0 >= Time && LA40_0 <= Timer)||LA40_0==Transpose||LA40_0==TypeOf||LA40_0==Unique||(LA40_0 >= UrlDecode && LA40_0 <= UrlEncode)||(LA40_0 >= Uuid && LA40_0 <= Wait)) ) {
					alt40=1;
				}

				switch (alt40) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:594:27: caseStatement
					{
					pushFollow(FOLLOW_caseStatement_in_switchStatement4823);
					caseStatement499=caseStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_caseStatement.add(caseStatement499.getTree());
					}
					break;

				default :
					if ( cnt40 >= 1 ) break loop40;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(40, input);
					throw eee;
				}
				cnt40++;
			}

			End500=(Token)match(input,End,FOLLOW_End_in_switchStatement4826); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End500);

			// AST REWRITE
			// elements: caseStatement, 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 = (Object)adaptor.nil();
			// 594:46: -> SWITCH expression ( caseStatement )+
			{
				adaptor.addChild(root_0, (Object)adaptor.create(SWITCH, "SWITCH"));
				adaptor.addChild(root_0, stream_expression.nextTree());
				if ( !(stream_caseStatement.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_caseStatement.hasNext() ) {
					adaptor.addChild(root_0, stream_caseStatement.nextTree());
				}
				stream_caseStatement.reset();

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "switchStatement"


	public static class caseStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "caseStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:597:1: caseStatement : ( variant )+ Do block End -> ( variant )+ block ;
	public final ReflexParser.caseStatement_return caseStatement() throws RecognitionException {
		ReflexParser.caseStatement_return retval = new ReflexParser.caseStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Do502=null;
		Token End504=null;
		ParserRuleReturnScope variant501 =null;
		ParserRuleReturnScope block503 =null;

		Object Do502_tree=null;
		Object End504_tree=null;
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleSubtreeStream stream_variant=new RewriteRuleSubtreeStream(adaptor,"rule variant");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:598:3: ( ( variant )+ Do block End -> ( variant )+ block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:598:5: ( variant )+ Do block End
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:598:5: ( variant )+
			int cnt41=0;
			loop41:
			while (true) {
				int alt41=2;
				int LA41_0 = input.LA(1);
				if ( (LA41_0==All||(LA41_0 >= Any && LA41_0 <= Archive)||LA41_0==Assert||(LA41_0 >= AsyncCall && LA41_0 <= AsyncCallScript)||(LA41_0 >= AsyncStatus && LA41_0 <= B64Decompress)||LA41_0==Bool||(LA41_0 >= Call && LA41_0 <= Cast)||(LA41_0 >= Chain && LA41_0 <= Collate)||LA41_0==Copy||(LA41_0 >= Date && LA41_0 <= Debug)||(LA41_0 >= Default && LA41_0 <= Difference)||LA41_0==DottedIdentifier||LA41_0==DropWhile||(LA41_0 >= Evals && LA41_0 <= Excl)||(LA41_0 >= File && LA41_0 <= Fold)||(LA41_0 >= Format && LA41_0 <= FromJson)||(LA41_0 >= GenSchema && LA41_0 <= HasCapability)||LA41_0==Identifier||LA41_0==Integer||(LA41_0 >= IsFile && LA41_0 <= IsFolder)||(LA41_0 >= Join && LA41_0 <= Json)||(LA41_0 >= KernelIdentifier && LA41_0 <= Keys)||(LA41_0 >= Lib && LA41_0 <= Long)||LA41_0==MD5||LA41_0==MapFn||(LA41_0 >= Matches && LA41_0 <= MkDir)||(LA41_0 >= New && LA41_0 <= OParen)||LA41_0==PackageIdentifier||LA41_0==Port||(LA41_0 >= Print && LA41_0 <= PropertyPlaceholder)||LA41_0==PutCache||LA41_0==QuotedString||(LA41_0 >= RPull && LA41_0 <= Replace)||LA41_0==Round||LA41_0==Signal||(LA41_0 >= Size && LA41_0 <= Sort)||(LA41_0 >= Spawn && LA41_0 <= String)||(LA41_0 >= Subtract && LA41_0 <= SuspendWait)||(LA41_0 >= TakeWhile && LA41_0 <= Template)||(LA41_0 >= Time && LA41_0 <= Timer)||LA41_0==Transpose||LA41_0==TypeOf||LA41_0==Unique||(LA41_0 >= UrlDecode && LA41_0 <= UrlEncode)||(LA41_0 >= Uuid && LA41_0 <= Wait)) ) {
					alt41=1;
				}

				switch (alt41) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:598:5: variant
					{
					pushFollow(FOLLOW_variant_in_caseStatement4851);
					variant501=variant();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_variant.add(variant501.getTree());
					}
					break;

				default :
					if ( cnt41 >= 1 ) break loop41;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(41, input);
					throw eee;
				}
				cnt41++;
			}

			Do502=(Token)match(input,Do,FOLLOW_Do_in_caseStatement4854); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Do.add(Do502);

			pushFollow(FOLLOW_block_in_caseStatement4856);
			block503=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block503.getTree());
			End504=(Token)match(input,End,FOLLOW_End_in_caseStatement4858); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End504);

			// AST REWRITE
			// elements: block, variant
			// 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 = (Object)adaptor.nil();
			// 598:27: -> ( variant )+ block
			{
				if ( !(stream_variant.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_variant.hasNext() ) {
					adaptor.addChild(root_0, stream_variant.nextTree());
				}
				stream_variant.reset();

				adaptor.addChild(root_0, stream_block.nextTree());
			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "caseStatement"


	public static class variant_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "variant"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:601:1: variant : ( Case Integer -> Integer | Case Number -> Number | Case Long -> Long | Case Bool -> Bool | Case String -> String | Default | Case QuotedString | expression );
	public final ReflexParser.variant_return variant() throws RecognitionException {
		ReflexParser.variant_return retval = new ReflexParser.variant_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Case505=null;
		Token Integer506=null;
		Token Case507=null;
		Token Number508=null;
		Token Case509=null;
		Token Long510=null;
		Token Case511=null;
		Token Bool512=null;
		Token Case513=null;
		Token String514=null;
		Token Default515=null;
		Token Case516=null;
		Token QuotedString517=null;
		ParserRuleReturnScope expression518 =null;

		Object Case505_tree=null;
		Object Integer506_tree=null;
		Object Case507_tree=null;
		Object Number508_tree=null;
		Object Case509_tree=null;
		Object Long510_tree=null;
		Object Case511_tree=null;
		Object Bool512_tree=null;
		Object Case513_tree=null;
		Object String514_tree=null;
		Object Default515_tree=null;
		Object Case516_tree=null;
		Object QuotedString517_tree=null;
		RewriteRuleTokenStream stream_Integer=new RewriteRuleTokenStream(adaptor,"token Integer");
		RewriteRuleTokenStream stream_Number=new RewriteRuleTokenStream(adaptor,"token Number");
		RewriteRuleTokenStream stream_Bool=new RewriteRuleTokenStream(adaptor,"token Bool");
		RewriteRuleTokenStream stream_Long=new RewriteRuleTokenStream(adaptor,"token Long");
		RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");
		RewriteRuleTokenStream stream_Case=new RewriteRuleTokenStream(adaptor,"token Case");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:602:3: ( Case Integer -> Integer | Case Number -> Number | Case Long -> Long | Case Bool -> Bool | Case String -> String | Default | Case QuotedString | expression )
			int alt42=8;
			switch ( input.LA(1) ) {
			case Case:
				{
				switch ( input.LA(2) ) {
				case Integer:
					{
					alt42=1;
					}
					break;
				case Number:
					{
					alt42=2;
					}
					break;
				case Long:
					{
					alt42=3;
					}
					break;
				case Bool:
					{
					alt42=4;
					}
					break;
				case String:
					{
					alt42=5;
					}
					break;
				case QuotedString:
					{
					alt42=7;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 42, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case Default:
				{
				alt42=6;
				}
				break;
			case All:
			case Any:
			case Archive:
			case Assert:
			case AsyncCall:
			case AsyncCallScript:
			case AsyncStatus:
			case B64Compress:
			case B64Decompress:
			case Bool:
			case Call:
			case Capabilities:
			case Cast:
			case Chain:
			case Close:
			case Collate:
			case Copy:
			case Date:
			case Debug:
			case Defined:
			case Delete:
			case Difference:
			case DottedIdentifier:
			case DropWhile:
			case Evals:
			case Excl:
			case File:
			case FilterFn:
			case Fold:
			case Format:
			case FromJson:
			case GenSchema:
			case GenStruct:
			case GetCache:
			case GetCh:
			case GetLine:
			case HasCapability:
			case Identifier:
			case Integer:
			case IsFile:
			case IsFolder:
			case Join:
			case Json:
			case KernelIdentifier:
			case Keys:
			case Lib:
			case Long:
			case MD5:
			case MapFn:
			case Matches:
			case Merge:
			case MergeIf:
			case Message:
			case MkDir:
			case New:
			case Null:
			case Number:
			case OBrace:
			case OBracket:
			case OParen:
			case PackageIdentifier:
			case Port:
			case Print:
			case Println:
			case PropertyPlaceholder:
			case PutCache:
			case QuotedString:
			case RPull:
			case RPush:
			case Rand:
			case ReadDir:
			case Remove:
			case Replace:
			case Round:
			case Signal:
			case Size:
			case Sleep:
			case Sort:
			case Spawn:
			case Split:
			case SplitWith:
			case String:
			case Subtract:
			case Suspend:
			case SuspendWait:
			case TakeWhile:
			case Template:
			case Time:
			case Timer:
			case Transpose:
			case TypeOf:
			case Unique:
			case UrlDecode:
			case UrlEncode:
			case Uuid:
			case Vars:
			case Wait:
				{
				alt42=8;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 42, 0, input);
				throw nvae;
			}
			switch (alt42) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:602:6: Case Integer
					{
					Case505=(Token)match(input,Case,FOLLOW_Case_in_variant4881); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Case.add(Case505);

					Integer506=(Token)match(input,Integer,FOLLOW_Integer_in_variant4883); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Integer.add(Integer506);

					// AST REWRITE
					// elements: Integer
					// 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 = (Object)adaptor.nil();
					// 602:19: -> Integer
					{
						adaptor.addChild(root_0, stream_Integer.nextNode());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:603:6: Case Number
					{
					Case507=(Token)match(input,Case,FOLLOW_Case_in_variant4894); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Case.add(Case507);

					Number508=(Token)match(input,Number,FOLLOW_Number_in_variant4896); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Number.add(Number508);

					// AST REWRITE
					// elements: Number
					// 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 = (Object)adaptor.nil();
					// 603:18: -> Number
					{
						adaptor.addChild(root_0, stream_Number.nextNode());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:604:6: Case Long
					{
					Case509=(Token)match(input,Case,FOLLOW_Case_in_variant4907); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Case.add(Case509);

					Long510=(Token)match(input,Long,FOLLOW_Long_in_variant4909); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Long.add(Long510);

					// AST REWRITE
					// elements: Long
					// 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 = (Object)adaptor.nil();
					// 604:16: -> Long
					{
						adaptor.addChild(root_0, stream_Long.nextNode());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:605:6: Case Bool
					{
					Case511=(Token)match(input,Case,FOLLOW_Case_in_variant4920); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Case.add(Case511);

					Bool512=(Token)match(input,Bool,FOLLOW_Bool_in_variant4922); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Bool.add(Bool512);

					// AST REWRITE
					// elements: Bool
					// 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 = (Object)adaptor.nil();
					// 605:16: -> Bool
					{
						adaptor.addChild(root_0, stream_Bool.nextNode());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:606:6: Case String
					{
					Case513=(Token)match(input,Case,FOLLOW_Case_in_variant4935); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Case.add(Case513);

					String514=(Token)match(input,String,FOLLOW_String_in_variant4937); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_String.add(String514);

					// AST REWRITE
					// elements: String
					// 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 = (Object)adaptor.nil();
					// 606:18: -> String
					{
						adaptor.addChild(root_0, stream_String.nextNode());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:607:6: Default
					{
					root_0 = (Object)adaptor.nil();


					Default515=(Token)match(input,Default,FOLLOW_Default_in_variant4948); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Default515_tree = (Object)adaptor.create(Default515);
					adaptor.addChild(root_0, Default515_tree);
					}

					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:608:6: Case QuotedString
					{
					root_0 = (Object)adaptor.nil();


					Case516=(Token)match(input,Case,FOLLOW_Case_in_variant4955); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Case516_tree = (Object)adaptor.create(Case516);
					adaptor.addChild(root_0, Case516_tree);
					}

					QuotedString517=(Token)match(input,QuotedString,FOLLOW_QuotedString_in_variant4957); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					QuotedString517_tree = (Object)adaptor.create(QuotedString517);
					adaptor.addChild(root_0, QuotedString517_tree);
					}

					if ( state.backtracking==0 ) { error("Quoted String found where constant expected. Use single quotes.", input, QuotedString517);}
					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:609:6: expression
					{
					root_0 = (Object)adaptor.nil();


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

					if ( state.backtracking==0 ) {error("Expression found where constant expected.", input, (expression518!=null?(expression518.start):null));}
					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "variant"


	public static class ifStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "ifStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:612:1: ifStatement : ifStat ( elseIfStat )* ( elseStat )? ( End )? -> ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? ) ;
	public final ReflexParser.ifStatement_return ifStatement() throws RecognitionException {
		ReflexParser.ifStatement_return retval = new ReflexParser.ifStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token End522=null;
		ParserRuleReturnScope ifStat519 =null;
		ParserRuleReturnScope elseIfStat520 =null;
		ParserRuleReturnScope elseStat521 =null;

		Object End522_tree=null;
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleSubtreeStream stream_ifStat=new RewriteRuleSubtreeStream(adaptor,"rule ifStat");
		RewriteRuleSubtreeStream stream_elseIfStat=new RewriteRuleSubtreeStream(adaptor,"rule elseIfStat");
		RewriteRuleSubtreeStream stream_elseStat=new RewriteRuleSubtreeStream(adaptor,"rule elseStat");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:3: ( ifStat ( elseIfStat )* ( elseStat )? ( End )? -> ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:6: ifStat ( elseIfStat )* ( elseStat )? ( End )?
			{
			pushFollow(FOLLOW_ifStat_in_ifStatement4984);
			ifStat519=ifStat();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_ifStat.add(ifStat519.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:13: ( elseIfStat )*
			loop43:
			while (true) {
				int alt43=2;
				int LA43_0 = input.LA(1);
				if ( (LA43_0==Else) ) {
					int LA43_1 = input.LA(2);
					if ( (synpred176_Reflex()) ) {
						alt43=1;
					}

				}

				switch (alt43) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:13: elseIfStat
					{
					pushFollow(FOLLOW_elseIfStat_in_ifStatement4986);
					elseIfStat520=elseIfStat();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_elseIfStat.add(elseIfStat520.getTree());
					}
					break;

				default :
					break loop43;
				}
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:25: ( elseStat )?
			int alt44=2;
			int LA44_0 = input.LA(1);
			if ( (LA44_0==Else) ) {
				int LA44_1 = input.LA(2);
				if ( (synpred177_Reflex()) ) {
					alt44=1;
				}
			}
			switch (alt44) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:25: elseStat
					{
					pushFollow(FOLLOW_elseStat_in_ifStatement4989);
					elseStat521=elseStat();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_elseStat.add(elseStat521.getTree());
					}
					break;

			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:35: ( End )?
			int alt45=2;
			int LA45_0 = input.LA(1);
			if ( (LA45_0==End) ) {
				int LA45_1 = input.LA(2);
				if ( (synpred178_Reflex()) ) {
					alt45=1;
				}
			}
			switch (alt45) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:35: End
					{
					End522=(Token)match(input,End,FOLLOW_End_in_ifStatement4992); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End522);

					}
					break;

			}

			// AST REWRITE
			// elements: elseIfStat, ifStat, elseStat
			// 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 = (Object)adaptor.nil();
			// 613:40: -> ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:43: ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IF, (ifStat519!=null?(ifStat519.start):null)), root_1);
				adaptor.addChild(root_1, stream_ifStat.nextTree());
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:70: ( elseIfStat )*
				while ( stream_elseIfStat.hasNext() ) {
					adaptor.addChild(root_1, stream_elseIfStat.nextTree());
				}
				stream_elseIfStat.reset();

				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:82: ( elseStat )?
				if ( stream_elseStat.hasNext() ) {
					adaptor.addChild(root_1, stream_elseStat.nextTree());
				}
				stream_elseStat.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "ifStatement"


	public static class ifStat_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "ifStat"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:616:1: ifStat : ( If expression Do block -> ^( EXP[$If] expression block ) | If expression '{' block '}' -> ^( EXP[$If] expression block ) );
	public final ReflexParser.ifStat_return ifStat() throws RecognitionException {
		ReflexParser.ifStat_return retval = new ReflexParser.ifStat_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token If523=null;
		Token Do525=null;
		Token If527=null;
		Token char_literal529=null;
		Token char_literal531=null;
		ParserRuleReturnScope expression524 =null;
		ParserRuleReturnScope block526 =null;
		ParserRuleReturnScope expression528 =null;
		ParserRuleReturnScope block530 =null;

		Object If523_tree=null;
		Object Do525_tree=null;
		Object If527_tree=null;
		Object char_literal529_tree=null;
		Object char_literal531_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleTokenStream stream_If=new RewriteRuleTokenStream(adaptor,"token If");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:617:3: ( If expression Do block -> ^( EXP[$If] expression block ) | If expression '{' block '}' -> ^( EXP[$If] expression block ) )
			int alt46=2;
			int LA46_0 = input.LA(1);
			if ( (LA46_0==If) ) {
				int LA46_1 = input.LA(2);
				if ( (synpred179_Reflex()) ) {
					alt46=1;
				}
				else if ( (true) ) {
					alt46=2;
				}

			}

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

			switch (alt46) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:617:6: If expression Do block
					{
					If523=(Token)match(input,If,FOLLOW_If_in_ifStat5022); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If523);

					pushFollow(FOLLOW_expression_in_ifStat5024);
					expression524=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression524.getTree());
					Do525=(Token)match(input,Do,FOLLOW_Do_in_ifStat5026); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do525);

					pushFollow(FOLLOW_block_in_ifStat5028);
					block526=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block526.getTree());
					// AST REWRITE
					// elements: block, 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 = (Object)adaptor.nil();
					// 617:29: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:617:32: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If523), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:618:6: If expression '{' block '}'
					{
					If527=(Token)match(input,If,FOLLOW_If_in_ifStat5046); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If527);

					pushFollow(FOLLOW_expression_in_ifStat5048);
					expression528=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression528.getTree());
					char_literal529=(Token)match(input,OBrace,FOLLOW_OBrace_in_ifStat5050); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal529);

					pushFollow(FOLLOW_block_in_ifStat5052);
					block530=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block530.getTree());
					char_literal531=(Token)match(input,CBrace,FOLLOW_CBrace_in_ifStat5054); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal531);

					// AST REWRITE
					// elements: block, 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 = (Object)adaptor.nil();
					// 618:34: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:618:38: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If527), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "ifStat"


	public static class elseIfStat_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "elseIfStat"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:621:1: elseIfStat : ( Else If expression Do block -> ^( EXP[$If] expression block ) | Else If expression '{' block '}' -> ^( EXP[$If] expression block ) );
	public final ReflexParser.elseIfStat_return elseIfStat() throws RecognitionException {
		ReflexParser.elseIfStat_return retval = new ReflexParser.elseIfStat_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Else532=null;
		Token If533=null;
		Token Do535=null;
		Token Else537=null;
		Token If538=null;
		Token char_literal540=null;
		Token char_literal542=null;
		ParserRuleReturnScope expression534 =null;
		ParserRuleReturnScope block536 =null;
		ParserRuleReturnScope expression539 =null;
		ParserRuleReturnScope block541 =null;

		Object Else532_tree=null;
		Object If533_tree=null;
		Object Do535_tree=null;
		Object Else537_tree=null;
		Object If538_tree=null;
		Object char_literal540_tree=null;
		Object char_literal542_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleTokenStream stream_If=new RewriteRuleTokenStream(adaptor,"token If");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:622:3: ( Else If expression Do block -> ^( EXP[$If] expression block ) | Else If expression '{' block '}' -> ^( EXP[$If] expression block ) )
			int alt47=2;
			int LA47_0 = input.LA(1);
			if ( (LA47_0==Else) ) {
				int LA47_1 = input.LA(2);
				if ( (synpred180_Reflex()) ) {
					alt47=1;
				}
				else if ( (true) ) {
					alt47=2;
				}

			}

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

			switch (alt47) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:622:6: Else If expression Do block
					{
					Else532=(Token)match(input,Else,FOLLOW_Else_in_elseIfStat5080); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else532);

					If533=(Token)match(input,If,FOLLOW_If_in_elseIfStat5082); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If533);

					pushFollow(FOLLOW_expression_in_elseIfStat5084);
					expression534=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression534.getTree());
					Do535=(Token)match(input,Do,FOLLOW_Do_in_elseIfStat5086); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do535);

					pushFollow(FOLLOW_block_in_elseIfStat5088);
					block536=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block536.getTree());
					// AST REWRITE
					// elements: block, 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 = (Object)adaptor.nil();
					// 622:34: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:622:37: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If533), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:623:6: Else If expression '{' block '}'
					{
					Else537=(Token)match(input,Else,FOLLOW_Else_in_elseIfStat5106); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else537);

					If538=(Token)match(input,If,FOLLOW_If_in_elseIfStat5108); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If538);

					pushFollow(FOLLOW_expression_in_elseIfStat5110);
					expression539=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression539.getTree());
					char_literal540=(Token)match(input,OBrace,FOLLOW_OBrace_in_elseIfStat5112); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal540);

					pushFollow(FOLLOW_block_in_elseIfStat5114);
					block541=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block541.getTree());
					char_literal542=(Token)match(input,CBrace,FOLLOW_CBrace_in_elseIfStat5116); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal542);

					// AST REWRITE
					// elements: block, 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 = (Object)adaptor.nil();
					// 623:39: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:623:42: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If538), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "elseIfStat"


	public static class elseStat_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "elseStat"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:626:1: elseStat : ( Else Do block -> ^( EXP[$Else] block ) | Else '{' block '}' -> ^( EXP[$Else] block ) );
	public final ReflexParser.elseStat_return elseStat() throws RecognitionException {
		ReflexParser.elseStat_return retval = new ReflexParser.elseStat_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Else543=null;
		Token Do544=null;
		Token Else546=null;
		Token char_literal547=null;
		Token char_literal549=null;
		ParserRuleReturnScope block545 =null;
		ParserRuleReturnScope block548 =null;

		Object Else543_tree=null;
		Object Do544_tree=null;
		Object Else546_tree=null;
		Object char_literal547_tree=null;
		Object char_literal549_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:627:3: ( Else Do block -> ^( EXP[$Else] block ) | Else '{' block '}' -> ^( EXP[$Else] block ) )
			int alt48=2;
			int LA48_0 = input.LA(1);
			if ( (LA48_0==Else) ) {
				int LA48_1 = input.LA(2);
				if ( (LA48_1==Do) ) {
					alt48=1;
				}
				else if ( (LA48_1==OBrace) ) {
					alt48=2;
				}

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

			}

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

			switch (alt48) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:627:6: Else Do block
					{
					Else543=(Token)match(input,Else,FOLLOW_Else_in_elseStat5141); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else543);

					Do544=(Token)match(input,Do,FOLLOW_Do_in_elseStat5143); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do544);

					pushFollow(FOLLOW_block_in_elseStat5145);
					block545=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block545.getTree());
					// AST REWRITE
					// elements: block
					// 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 = (Object)adaptor.nil();
					// 627:20: -> ^( EXP[$Else] block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:627:23: ^( EXP[$Else] block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, Else543), root_1);
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:628:6: Else '{' block '}'
					{
					Else546=(Token)match(input,Else,FOLLOW_Else_in_elseStat5161); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else546);

					char_literal547=(Token)match(input,OBrace,FOLLOW_OBrace_in_elseStat5163); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal547);

					pushFollow(FOLLOW_block_in_elseStat5165);
					block548=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block548.getTree());
					char_literal549=(Token)match(input,CBrace,FOLLOW_CBrace_in_elseStat5167); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal549);

					// AST REWRITE
					// elements: block
					// 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 = (Object)adaptor.nil();
					// 628:25: -> ^( EXP[$Else] block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:628:28: ^( EXP[$Else] block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, Else546), root_1);
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "elseStat"


	public static class functionDecl_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "functionDecl"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:631:1: functionDecl : Def Identifier '(' ( idList )? ')' ( '{' )? block ( End | '}' ) ;
	public final ReflexParser.functionDecl_return functionDecl() throws RecognitionException {
		ReflexParser.functionDecl_return retval = new ReflexParser.functionDecl_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Def550=null;
		Token Identifier551=null;
		Token char_literal552=null;
		Token char_literal554=null;
		Token char_literal555=null;
		Token set557=null;
		ParserRuleReturnScope idList553 =null;
		ParserRuleReturnScope block556 =null;

		Object Def550_tree=null;
		Object Identifier551_tree=null;
		Object char_literal552_tree=null;
		Object char_literal554_tree=null;
		Object char_literal555_tree=null;
		Object set557_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:3: ( Def Identifier '(' ( idList )? ')' ( '{' )? block ( End | '}' ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:6: Def Identifier '(' ( idList )? ')' ( '{' )? block ( End | '}' )
			{
			root_0 = (Object)adaptor.nil();


			Def550=(Token)match(input,Def,FOLLOW_Def_in_functionDecl5190); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Def550_tree = (Object)adaptor.create(Def550);
			adaptor.addChild(root_0, Def550_tree);
			}

			Identifier551=(Token)match(input,Identifier,FOLLOW_Identifier_in_functionDecl5192); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Identifier551_tree = (Object)adaptor.create(Identifier551);
			adaptor.addChild(root_0, Identifier551_tree);
			}

			char_literal552=(Token)match(input,OParen,FOLLOW_OParen_in_functionDecl5194); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal552_tree = (Object)adaptor.create(char_literal552);
			adaptor.addChild(root_0, char_literal552_tree);
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:25: ( idList )?
			int alt49=2;
			int LA49_0 = input.LA(1);
			if ( (LA49_0==Identifier) ) {
				alt49=1;
			}
			switch (alt49) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:25: idList
					{
					pushFollow(FOLLOW_idList_in_functionDecl5196);
					idList553=idList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, idList553.getTree());

					}
					break;

			}

			char_literal554=(Token)match(input,CParen,FOLLOW_CParen_in_functionDecl5199); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal554_tree = (Object)adaptor.create(char_literal554);
			adaptor.addChild(root_0, char_literal554_tree);
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:37: ( '{' )?
			int alt50=2;
			alt50 = dfa50.predict(input);
			switch (alt50) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:37: '{'
					{
					char_literal555=(Token)match(input,OBrace,FOLLOW_OBrace_in_functionDecl5201); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal555_tree = (Object)adaptor.create(char_literal555);
					adaptor.addChild(root_0, char_literal555_tree);
					}

					}
					break;

			}

			pushFollow(FOLLOW_block_in_functionDecl5204);
			block556=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, block556.getTree());

			set557=input.LT(1);
			if ( input.LA(1)==CBrace||input.LA(1)==End ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set557));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			if ( state.backtracking==0 ) { defineFunction((Identifier551!=null?Identifier551.getText():null), (idList553!=null?((Object)idList553.getTree()):null), (block556!=null?((Object)block556.getTree()):null), Identifier551.getLine()); }
			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "functionDecl"


	public static class structureDecl_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "structureDecl"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:636:1: structureDecl : Structure Identifier ( '{' | Do ) structureMemberList ( '}' | End ) ;
	public final ReflexParser.structureDecl_return structureDecl() throws RecognitionException {
		ReflexParser.structureDecl_return retval = new ReflexParser.structureDecl_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Structure558=null;
		Token Identifier559=null;
		Token set560=null;
		Token set562=null;
		ParserRuleReturnScope structureMemberList561 =null;

		Object Structure558_tree=null;
		Object Identifier559_tree=null;
		Object set560_tree=null;
		Object set562_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:637:3: ( Structure Identifier ( '{' | Do ) structureMemberList ( '}' | End ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:637:5: Structure Identifier ( '{' | Do ) structureMemberList ( '}' | End )
			{
			root_0 = (Object)adaptor.nil();


			Structure558=(Token)match(input,Structure,FOLLOW_Structure_in_structureDecl5231); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Structure558_tree = (Object)adaptor.create(Structure558);
			adaptor.addChild(root_0, Structure558_tree);
			}

			Identifier559=(Token)match(input,Identifier,FOLLOW_Identifier_in_structureDecl5233); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Identifier559_tree = (Object)adaptor.create(Identifier559);
			adaptor.addChild(root_0, Identifier559_tree);
			}

			set560=input.LT(1);
			if ( input.LA(1)==Do||input.LA(1)==OBrace ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set560));
				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_structureMemberList_in_structureDecl5243);
			structureMemberList561=structureMemberList();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, structureMemberList561.getTree());

			set562=input.LT(1);
			if ( input.LA(1)==CBrace||input.LA(1)==End ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set562));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			if ( state.backtracking==0 ) {
			        defineStructure((Identifier559!=null?Identifier559.getText():null), Identifier559.getLine());
			     }
			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "structureDecl"


	public static class structureMemberList_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "structureMemberList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:643:1: structureMemberList : ( structureMember )+ ;
	public final ReflexParser.structureMemberList_return structureMemberList() throws RecognitionException {
		ReflexParser.structureMemberList_return retval = new ReflexParser.structureMemberList_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope structureMember563 =null;


		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:644:3: ( ( structureMember )+ )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:644:6: ( structureMember )+
			{
			root_0 = (Object)adaptor.nil();


			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:644:6: ( structureMember )+
			int cnt51=0;
			loop51:
			while (true) {
				int alt51=2;
				int LA51_0 = input.LA(1);
				if ( (LA51_0==Identifier) ) {
					alt51=1;
				}

				switch (alt51) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:644:6: structureMember
					{
					pushFollow(FOLLOW_structureMember_in_structureMemberList5272);
					structureMember563=structureMember();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, structureMember563.getTree());

					}
					break;

				default :
					if ( cnt51 >= 1 ) break loop51;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(51, input);
					throw eee;
				}
				cnt51++;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "structureMemberList"


	public static class structureMember_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "structureMember"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:647:1: structureMember : Identifier structureType ';' ;
	public final ReflexParser.structureMember_return structureMember() throws RecognitionException {
		ReflexParser.structureMember_return retval = new ReflexParser.structureMember_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Identifier564=null;
		Token char_literal566=null;
		ParserRuleReturnScope structureType565 =null;

		Object Identifier564_tree=null;
		Object char_literal566_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:648:3: ( Identifier structureType ';' )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:648:6: Identifier structureType ';'
			{
			root_0 = (Object)adaptor.nil();


			Identifier564=(Token)match(input,Identifier,FOLLOW_Identifier_in_structureMember5287); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Identifier564_tree = (Object)adaptor.create(Identifier564);
			adaptor.addChild(root_0, Identifier564_tree);
			}

			pushFollow(FOLLOW_structureType_in_structureMember5289);
			structureType565=structureType();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, structureType565.getTree());

			char_literal566=(Token)match(input,SColon,FOLLOW_SColon_in_structureMember5291); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal566_tree = (Object)adaptor.create(char_literal566);
			adaptor.addChild(root_0, char_literal566_tree);
			}

			if ( state.backtracking==0 ) {
			       pushStructureMember((Identifier564!=null?Identifier564.getText():null));
			    }
			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "structureMember"


	public static class structureType_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "structureType"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:654:1: structureType : ( objectStructureType | simpleStructureType | arrayStructureType ) ;
	public final ReflexParser.structureType_return structureType() throws RecognitionException {
		ReflexParser.structureType_return retval = new ReflexParser.structureType_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope objectStructureType567 =null;
		ParserRuleReturnScope simpleStructureType568 =null;
		ParserRuleReturnScope arrayStructureType569 =null;


		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:654:15: ( ( objectStructureType | simpleStructureType | arrayStructureType ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:655:4: ( objectStructureType | simpleStructureType | arrayStructureType )
			{
			root_0 = (Object)adaptor.nil();


			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:655:4: ( objectStructureType | simpleStructureType | arrayStructureType )
			int alt52=3;
			switch ( input.LA(1) ) {
			case Structure:
				{
				alt52=1;
				}
				break;
			case 227:
			case 230:
			case 234:
				{
				alt52=2;
				}
				break;
			case 225:
				{
				alt52=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 52, 0, input);
				throw nvae;
			}
			switch (alt52) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:655:6: objectStructureType
					{
					pushFollow(FOLLOW_objectStructureType_in_structureType5313);
					objectStructureType567=objectStructureType();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, objectStructureType567.getTree());

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:655:28: simpleStructureType
					{
					pushFollow(FOLLOW_simpleStructureType_in_structureType5317);
					simpleStructureType568=simpleStructureType();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleStructureType568.getTree());

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:655:50: arrayStructureType
					{
					pushFollow(FOLLOW_arrayStructureType_in_structureType5321);
					arrayStructureType569=arrayStructureType();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, arrayStructureType569.getTree());

					}
					break;

			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "structureType"


	public static class objectStructureType_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "objectStructureType"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:658:1: objectStructureType : Structure ( '{' | Do ) structureMemberList ( '}' | End ) ;
	public final ReflexParser.objectStructureType_return objectStructureType() throws RecognitionException {
		ReflexParser.objectStructureType_return retval = new ReflexParser.objectStructureType_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Structure570=null;
		Token set571=null;
		Token set573=null;
		ParserRuleReturnScope structureMemberList572 =null;

		Object Structure570_tree=null;
		Object set571_tree=null;
		Object set573_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:658:21: ( Structure ( '{' | Do ) structureMemberList ( '}' | End ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:659:4: Structure ( '{' | Do ) structureMemberList ( '}' | End )
			{
			root_0 = (Object)adaptor.nil();


			Structure570=(Token)match(input,Structure,FOLLOW_Structure_in_objectStructureType5335); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Structure570_tree = (Object)adaptor.create(Structure570);
			adaptor.addChild(root_0, Structure570_tree);
			}

			if ( state.backtracking==0 ) {
					structureStack.push(new Structure());
			   }
			set571=input.LT(1);
			if ( input.LA(1)==Do||input.LA(1)==OBrace ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set571));
				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_structureMemberList_in_objectStructureType5350);
			structureMemberList572=structureMemberList();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, structureMemberList572.getTree());

			set573=input.LT(1);
			if ( input.LA(1)==CBrace||input.LA(1)==End ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set573));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			if ( state.backtracking==0 ) {
			        Structure s = structureStack.pop();
			        structureTypeStack.push(new InnerStructureType(s));
			   }
			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "objectStructureType"


	public static class arrayStructureType_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "arrayStructureType"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:668:1: arrayStructureType : 'array' 'of' simpleStructureType ;
	public final ReflexParser.arrayStructureType_return arrayStructureType() throws RecognitionException {
		ReflexParser.arrayStructureType_return retval = new ReflexParser.arrayStructureType_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token string_literal574=null;
		Token string_literal575=null;
		ParserRuleReturnScope simpleStructureType576 =null;

		Object string_literal574_tree=null;
		Object string_literal575_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:668:20: ( 'array' 'of' simpleStructureType )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:669:4: 'array' 'of' simpleStructureType
			{
			root_0 = (Object)adaptor.nil();


			string_literal574=(Token)match(input,225,FOLLOW_225_in_arrayStructureType5372); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			string_literal574_tree = (Object)adaptor.create(string_literal574);
			adaptor.addChild(root_0, string_literal574_tree);
			}

			string_literal575=(Token)match(input,231,FOLLOW_231_in_arrayStructureType5374); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			string_literal575_tree = (Object)adaptor.create(string_literal575);
			adaptor.addChild(root_0, string_literal575_tree);
			}

			pushFollow(FOLLOW_simpleStructureType_in_arrayStructureType5376);
			simpleStructureType576=simpleStructureType();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleStructureType576.getTree());

			if ( state.backtracking==0 ) { structureTypeStack.push(new ArrayStructureType(BasicStructureTypeFactory.createStructureType((simpleStructureType576!=null?input.toString(simpleStructureType576.start,simpleStructureType576.stop):null)))); }
			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "arrayStructureType"


	public static class simpleStructureType_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "simpleStructureType"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:672:1: simpleStructureType : ( 'integer' | 'number' | 'string' ) ;
	public final ReflexParser.simpleStructureType_return simpleStructureType() throws RecognitionException {
		ReflexParser.simpleStructureType_return retval = new ReflexParser.simpleStructureType_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set577=null;

		Object set577_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:672:21: ( ( 'integer' | 'number' | 'string' ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:673:4: ( 'integer' | 'number' | 'string' )
			{
			root_0 = (Object)adaptor.nil();


			set577=input.LT(1);
			if ( input.LA(1)==227||input.LA(1)==230||input.LA(1)==234 ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set577));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			if ( state.backtracking==0 ) { structureTypeStack.push(BasicStructureTypeFactory.createStructureType(input.toString(retval.start,input.LT(-1)))); }
			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "simpleStructureType"


	public static class forStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "forStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:676:1: forStatement : ( For Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( FORTO[$Identifier] Identifier expression expression block ) | For Identifier In expression Do block End -> ^( FORLIST[$Identifier] Identifier expression block ) );
	public final ReflexParser.forStatement_return forStatement() throws RecognitionException {
		ReflexParser.forStatement_return retval = new ReflexParser.forStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token For578=null;
		Token Identifier579=null;
		Token char_literal580=null;
		Token To582=null;
		Token Do584=null;
		Token End586=null;
		Token char_literal587=null;
		Token char_literal589=null;
		Token For590=null;
		Token Identifier591=null;
		Token In592=null;
		Token Do594=null;
		Token End596=null;
		ParserRuleReturnScope expression581 =null;
		ParserRuleReturnScope expression583 =null;
		ParserRuleReturnScope block585 =null;
		ParserRuleReturnScope block588 =null;
		ParserRuleReturnScope expression593 =null;
		ParserRuleReturnScope block595 =null;

		Object For578_tree=null;
		Object Identifier579_tree=null;
		Object char_literal580_tree=null;
		Object To582_tree=null;
		Object Do584_tree=null;
		Object End586_tree=null;
		Object char_literal587_tree=null;
		Object char_literal589_tree=null;
		Object For590_tree=null;
		Object Identifier591_tree=null;
		Object In592_tree=null;
		Object Do594_tree=null;
		Object End596_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
		RewriteRuleTokenStream stream_For=new RewriteRuleTokenStream(adaptor,"token For");
		RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_To=new RewriteRuleTokenStream(adaptor,"token To");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:3: ( For Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( FORTO[$Identifier] Identifier expression expression block ) | For Identifier In expression Do block End -> ^( FORLIST[$Identifier] Identifier expression block ) )
			int alt54=2;
			int LA54_0 = input.LA(1);
			if ( (LA54_0==For) ) {
				int LA54_1 = input.LA(2);
				if ( (LA54_1==Identifier) ) {
					int LA54_2 = input.LA(3);
					if ( (LA54_2==Assign) ) {
						alt54=1;
					}
					else if ( (LA54_2==In) ) {
						alt54=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 54, 2, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}

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

			}

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

			switch (alt54) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:6: For Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) )
					{
					For578=(Token)match(input,For,FOLLOW_For_in_forStatement5417); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_For.add(For578);

					Identifier579=(Token)match(input,Identifier,FOLLOW_Identifier_in_forStatement5419); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier579);

					char_literal580=(Token)match(input,Assign,FOLLOW_Assign_in_forStatement5421); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assign.add(char_literal580);

					pushFollow(FOLLOW_expression_in_forStatement5423);
					expression581=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression581.getTree());
					To582=(Token)match(input,To,FOLLOW_To_in_forStatement5425); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_To.add(To582);

					pushFollow(FOLLOW_expression_in_forStatement5427);
					expression583=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression583.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:50: ( ( Do block End ) | ( '{' block '}' ) )
					int alt53=2;
					int LA53_0 = input.LA(1);
					if ( (LA53_0==Do) ) {
						alt53=1;
					}
					else if ( (LA53_0==OBrace) ) {
						alt53=2;
					}

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

					switch (alt53) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:51: ( Do block End )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:51: ( Do block End )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:52: Do block End
							{
							Do584=(Token)match(input,Do,FOLLOW_Do_in_forStatement5431); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Do.add(Do584);

							pushFollow(FOLLOW_block_in_forStatement5433);
							block585=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block585.getTree());
							End586=(Token)match(input,End,FOLLOW_End_in_forStatement5435); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_End.add(End586);

							}

							}
							break;
						case 2 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:68: ( '{' block '}' )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:68: ( '{' block '}' )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:677:70: '{' block '}'
							{
							char_literal587=(Token)match(input,OBrace,FOLLOW_OBrace_in_forStatement5442); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_OBrace.add(char_literal587);

							pushFollow(FOLLOW_block_in_forStatement5444);
							block588=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block588.getTree());
							char_literal589=(Token)match(input,CBrace,FOLLOW_CBrace_in_forStatement5446); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_CBrace.add(char_literal589);

							}

							}
							break;

					}

					// AST REWRITE
					// elements: Identifier, expression, expression, block
					// 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 = (Object)adaptor.nil();
					// 678:6: -> ^( FORTO[$Identifier] Identifier expression expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:678:9: ^( FORTO[$Identifier] Identifier expression expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FORTO, Identifier579), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:679:5: For Identifier In expression Do block End
					{
					For590=(Token)match(input,For,FOLLOW_For_in_forStatement5474); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_For.add(For590);

					Identifier591=(Token)match(input,Identifier,FOLLOW_Identifier_in_forStatement5476); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier591);

					In592=(Token)match(input,In,FOLLOW_In_in_forStatement5478); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_In.add(In592);

					pushFollow(FOLLOW_expression_in_forStatement5480);
					expression593=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression593.getTree());
					Do594=(Token)match(input,Do,FOLLOW_Do_in_forStatement5482); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do594);

					pushFollow(FOLLOW_block_in_forStatement5484);
					block595=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block595.getTree());
					End596=(Token)match(input,End,FOLLOW_End_in_forStatement5486); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End596);

					// AST REWRITE
					// elements: Identifier, expression, block
					// 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 = (Object)adaptor.nil();
					// 680:6: -> ^( FORLIST[$Identifier] Identifier expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:680:9: ^( FORLIST[$Identifier] Identifier expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FORLIST, Identifier591), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "forStatement"


	public static class pforStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "pforStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:683:1: pforStatement : ( PFor Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( PFORTO[$Identifier] Identifier expression expression block ) | PFor Identifier In expression Do block End -> ^( PFORLIST[$Identifier] Identifier expression block ) );
	public final ReflexParser.pforStatement_return pforStatement() throws RecognitionException {
		ReflexParser.pforStatement_return retval = new ReflexParser.pforStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PFor597=null;
		Token Identifier598=null;
		Token char_literal599=null;
		Token To601=null;
		Token Do603=null;
		Token End605=null;
		Token char_literal606=null;
		Token char_literal608=null;
		Token PFor609=null;
		Token Identifier610=null;
		Token In611=null;
		Token Do613=null;
		Token End615=null;
		ParserRuleReturnScope expression600 =null;
		ParserRuleReturnScope expression602 =null;
		ParserRuleReturnScope block604 =null;
		ParserRuleReturnScope block607 =null;
		ParserRuleReturnScope expression612 =null;
		ParserRuleReturnScope block614 =null;

		Object PFor597_tree=null;
		Object Identifier598_tree=null;
		Object char_literal599_tree=null;
		Object To601_tree=null;
		Object Do603_tree=null;
		Object End605_tree=null;
		Object char_literal606_tree=null;
		Object char_literal608_tree=null;
		Object PFor609_tree=null;
		Object Identifier610_tree=null;
		Object In611_tree=null;
		Object Do613_tree=null;
		Object End615_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
		RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_To=new RewriteRuleTokenStream(adaptor,"token To");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleTokenStream stream_PFor=new RewriteRuleTokenStream(adaptor,"token PFor");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:3: ( PFor Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( PFORTO[$Identifier] Identifier expression expression block ) | PFor Identifier In expression Do block End -> ^( PFORLIST[$Identifier] Identifier expression block ) )
			int alt56=2;
			int LA56_0 = input.LA(1);
			if ( (LA56_0==PFor) ) {
				int LA56_1 = input.LA(2);
				if ( (LA56_1==Identifier) ) {
					int LA56_2 = input.LA(3);
					if ( (LA56_2==Assign) ) {
						alt56=1;
					}
					else if ( (LA56_2==In) ) {
						alt56=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 56, 2, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}

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

			}

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

			switch (alt56) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:6: PFor Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) )
					{
					PFor597=(Token)match(input,PFor,FOLLOW_PFor_in_pforStatement5518); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PFor.add(PFor597);

					Identifier598=(Token)match(input,Identifier,FOLLOW_Identifier_in_pforStatement5520); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier598);

					char_literal599=(Token)match(input,Assign,FOLLOW_Assign_in_pforStatement5522); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assign.add(char_literal599);

					pushFollow(FOLLOW_expression_in_pforStatement5524);
					expression600=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression600.getTree());
					To601=(Token)match(input,To,FOLLOW_To_in_pforStatement5526); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_To.add(To601);

					pushFollow(FOLLOW_expression_in_pforStatement5528);
					expression602=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression602.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:51: ( ( Do block End ) | ( '{' block '}' ) )
					int alt55=2;
					int LA55_0 = input.LA(1);
					if ( (LA55_0==Do) ) {
						alt55=1;
					}
					else if ( (LA55_0==OBrace) ) {
						alt55=2;
					}

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

					switch (alt55) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:52: ( Do block End )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:52: ( Do block End )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:53: Do block End
							{
							Do603=(Token)match(input,Do,FOLLOW_Do_in_pforStatement5532); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Do.add(Do603);

							pushFollow(FOLLOW_block_in_pforStatement5534);
							block604=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block604.getTree());
							End605=(Token)match(input,End,FOLLOW_End_in_pforStatement5536); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_End.add(End605);

							}

							}
							break;
						case 2 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:69: ( '{' block '}' )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:69: ( '{' block '}' )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:684:71: '{' block '}'
							{
							char_literal606=(Token)match(input,OBrace,FOLLOW_OBrace_in_pforStatement5543); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_OBrace.add(char_literal606);

							pushFollow(FOLLOW_block_in_pforStatement5545);
							block607=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block607.getTree());
							char_literal608=(Token)match(input,CBrace,FOLLOW_CBrace_in_pforStatement5547); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_CBrace.add(char_literal608);

							}

							}
							break;

					}

					// AST REWRITE
					// elements: Identifier, expression, expression, block
					// 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 = (Object)adaptor.nil();
					// 685:6: -> ^( PFORTO[$Identifier] Identifier expression expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:685:9: ^( PFORTO[$Identifier] Identifier expression expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PFORTO, Identifier598), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:686:5: PFor Identifier In expression Do block End
					{
					PFor609=(Token)match(input,PFor,FOLLOW_PFor_in_pforStatement5575); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PFor.add(PFor609);

					Identifier610=(Token)match(input,Identifier,FOLLOW_Identifier_in_pforStatement5577); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier610);

					In611=(Token)match(input,In,FOLLOW_In_in_pforStatement5579); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_In.add(In611);

					pushFollow(FOLLOW_expression_in_pforStatement5581);
					expression612=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression612.getTree());
					Do613=(Token)match(input,Do,FOLLOW_Do_in_pforStatement5583); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do613);

					pushFollow(FOLLOW_block_in_pforStatement5585);
					block614=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block614.getTree());
					End615=(Token)match(input,End,FOLLOW_End_in_pforStatement5587); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End615);

					// AST REWRITE
					// elements: Identifier, expression, block
					// 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 = (Object)adaptor.nil();
					// 687:6: -> ^( PFORLIST[$Identifier] Identifier expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:687:9: ^( PFORLIST[$Identifier] Identifier expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PFORLIST, Identifier610), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_1, stream_block.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "pforStatement"


	public static class whileStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "whileStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:690:1: whileStatement : While expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( While expression block ) ;
	public final ReflexParser.whileStatement_return whileStatement() throws RecognitionException {
		ReflexParser.whileStatement_return retval = new ReflexParser.whileStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token While616=null;
		Token Do618=null;
		Token End620=null;
		Token char_literal621=null;
		Token char_literal623=null;
		ParserRuleReturnScope expression617 =null;
		ParserRuleReturnScope block619 =null;
		ParserRuleReturnScope block622 =null;

		Object While616_tree=null;
		Object Do618_tree=null;
		Object End620_tree=null;
		Object char_literal621_tree=null;
		Object char_literal623_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_While=new RewriteRuleTokenStream(adaptor,"token While");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:3: ( While expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( While expression block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:6: While expression ( ( Do block End ) | ( '{' block '}' ) )
			{
			While616=(Token)match(input,While,FOLLOW_While_in_whileStatement5619); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_While.add(While616);

			pushFollow(FOLLOW_expression_in_whileStatement5621);
			expression617=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression617.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:23: ( ( Do block End ) | ( '{' block '}' ) )
			int alt57=2;
			int LA57_0 = input.LA(1);
			if ( (LA57_0==Do) ) {
				alt57=1;
			}
			else if ( (LA57_0==OBrace) ) {
				alt57=2;
			}

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

			switch (alt57) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:24: ( Do block End )
					{
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:24: ( Do block End )
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:25: Do block End
					{
					Do618=(Token)match(input,Do,FOLLOW_Do_in_whileStatement5625); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do618);

					pushFollow(FOLLOW_block_in_whileStatement5627);
					block619=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block619.getTree());
					End620=(Token)match(input,End,FOLLOW_End_in_whileStatement5629); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End620);

					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:41: ( '{' block '}' )
					{
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:41: ( '{' block '}' )
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:42: '{' block '}'
					{
					char_literal621=(Token)match(input,OBrace,FOLLOW_OBrace_in_whileStatement5635); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal621);

					pushFollow(FOLLOW_block_in_whileStatement5637);
					block622=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block622.getTree());
					char_literal623=(Token)match(input,CBrace,FOLLOW_CBrace_in_whileStatement5639); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal623);

					}

					}
					break;

			}

			// AST REWRITE
			// elements: While, expression, block
			// 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 = (Object)adaptor.nil();
			// 691:58: -> ^( While expression block )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:691:61: ^( While expression block )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot(stream_While.nextNode(), root_1);
				adaptor.addChild(root_1, stream_expression.nextTree());
				adaptor.addChild(root_1, stream_block.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "whileStatement"


	public static class guardedStatement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "guardedStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:694:1: guardedStatement : ( Try Do g= block End Catch Identifier Do c= block End -> ^( Try $g Identifier $c) | Try '{' g= block '}' Catch Identifier '{' c= block '}' -> ^( Try $g Identifier $c) );
	public final ReflexParser.guardedStatement_return guardedStatement() throws RecognitionException {
		ReflexParser.guardedStatement_return retval = new ReflexParser.guardedStatement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Try624=null;
		Token Do625=null;
		Token End626=null;
		Token Catch627=null;
		Token Identifier628=null;
		Token Do629=null;
		Token End630=null;
		Token Try631=null;
		Token char_literal632=null;
		Token char_literal633=null;
		Token Catch634=null;
		Token Identifier635=null;
		Token char_literal636=null;
		Token char_literal637=null;
		ParserRuleReturnScope g =null;
		ParserRuleReturnScope c =null;

		Object Try624_tree=null;
		Object Do625_tree=null;
		Object End626_tree=null;
		Object Catch627_tree=null;
		Object Identifier628_tree=null;
		Object Do629_tree=null;
		Object End630_tree=null;
		Object Try631_tree=null;
		Object char_literal632_tree=null;
		Object char_literal633_tree=null;
		Object Catch634_tree=null;
		Object Identifier635_tree=null;
		Object char_literal636_tree=null;
		Object char_literal637_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_Catch=new RewriteRuleTokenStream(adaptor,"token Catch");
		RewriteRuleTokenStream stream_Try=new RewriteRuleTokenStream(adaptor,"token Try");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:695:3: ( Try Do g= block End Catch Identifier Do c= block End -> ^( Try $g Identifier $c) | Try '{' g= block '}' Catch Identifier '{' c= block '}' -> ^( Try $g Identifier $c) )
			int alt58=2;
			int LA58_0 = input.LA(1);
			if ( (LA58_0==Try) ) {
				int LA58_1 = input.LA(2);
				if ( (LA58_1==Do) ) {
					alt58=1;
				}
				else if ( (LA58_1==OBrace) ) {
					alt58=2;
				}

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

			}

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

			switch (alt58) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:695:6: Try Do g= block End Catch Identifier Do c= block End
					{
					Try624=(Token)match(input,Try,FOLLOW_Try_in_guardedStatement5665); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Try.add(Try624);

					Do625=(Token)match(input,Do,FOLLOW_Do_in_guardedStatement5667); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do625);

					pushFollow(FOLLOW_block_in_guardedStatement5671);
					g=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(g.getTree());
					End626=(Token)match(input,End,FOLLOW_End_in_guardedStatement5673); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End626);

					Catch627=(Token)match(input,Catch,FOLLOW_Catch_in_guardedStatement5675); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Catch.add(Catch627);

					Identifier628=(Token)match(input,Identifier,FOLLOW_Identifier_in_guardedStatement5677); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier628);

					Do629=(Token)match(input,Do,FOLLOW_Do_in_guardedStatement5679); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do629);

					pushFollow(FOLLOW_block_in_guardedStatement5683);
					c=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(c.getTree());
					End630=(Token)match(input,End,FOLLOW_End_in_guardedStatement5685); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End630);

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

					root_0 = (Object)adaptor.nil();
					// 695:57: -> ^( Try $g Identifier $c)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:695:60: ^( Try $g Identifier $c)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_Try.nextNode(), root_1);
						adaptor.addChild(root_1, stream_g.nextTree());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_c.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:696:6: Try '{' g= block '}' Catch Identifier '{' c= block '}'
					{
					Try631=(Token)match(input,Try,FOLLOW_Try_in_guardedStatement5706); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Try.add(Try631);

					char_literal632=(Token)match(input,OBrace,FOLLOW_OBrace_in_guardedStatement5708); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal632);

					pushFollow(FOLLOW_block_in_guardedStatement5712);
					g=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(g.getTree());
					char_literal633=(Token)match(input,CBrace,FOLLOW_CBrace_in_guardedStatement5714); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal633);

					Catch634=(Token)match(input,Catch,FOLLOW_Catch_in_guardedStatement5716); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Catch.add(Catch634);

					Identifier635=(Token)match(input,Identifier,FOLLOW_Identifier_in_guardedStatement5718); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier635);

					char_literal636=(Token)match(input,OBrace,FOLLOW_OBrace_in_guardedStatement5720); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal636);

					pushFollow(FOLLOW_block_in_guardedStatement5724);
					c=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(c.getTree());
					char_literal637=(Token)match(input,CBrace,FOLLOW_CBrace_in_guardedStatement5726); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal637);

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

					root_0 = (Object)adaptor.nil();
					// 696:59: -> ^( Try $g Identifier $c)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:696:62: ^( Try $g Identifier $c)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_Try.nextNode(), root_1);
						adaptor.addChild(root_1, stream_g.nextTree());
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_c.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "guardedStatement"


	public static class idList_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "idList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:699:1: idList : Identifier ( ',' Identifier )* -> ^( ID_LIST ( Identifier )+ ) ;
	public final ReflexParser.idList_return idList() throws RecognitionException {
		ReflexParser.idList_return retval = new ReflexParser.idList_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Identifier638=null;
		Token char_literal639=null;
		Token Identifier640=null;

		Object Identifier638_tree=null;
		Object char_literal639_tree=null;
		Object Identifier640_tree=null;
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:700:3: ( Identifier ( ',' Identifier )* -> ^( ID_LIST ( Identifier )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:700:6: Identifier ( ',' Identifier )*
			{
			Identifier638=(Token)match(input,Identifier,FOLLOW_Identifier_in_idList5754); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier638);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:700:17: ( ',' Identifier )*
			loop59:
			while (true) {
				int alt59=2;
				int LA59_0 = input.LA(1);
				if ( (LA59_0==Comma) ) {
					alt59=1;
				}

				switch (alt59) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:700:18: ',' Identifier
					{
					char_literal639=(Token)match(input,Comma,FOLLOW_Comma_in_idList5757); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal639);

					Identifier640=(Token)match(input,Identifier,FOLLOW_Identifier_in_idList5759); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier640);

					}
					break;

				default :
					break loop59;
				}
			}

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

			root_0 = (Object)adaptor.nil();
			// 700:35: -> ^( ID_LIST ( Identifier )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:700:38: ^( ID_LIST ( Identifier )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ID_LIST, "ID_LIST"), root_1);
				if ( !(stream_Identifier.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_Identifier.hasNext() ) {
					adaptor.addChild(root_1, stream_Identifier.nextNode());
				}
				stream_Identifier.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "idList"


	public static class exprList_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "exprList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:703:1: exprList : expression ( ',' expression )* -> ^( EXP_LIST ( expression )+ ) ;
	public final ReflexParser.exprList_return exprList() throws RecognitionException {
		ReflexParser.exprList_return retval = new ReflexParser.exprList_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal642=null;
		ParserRuleReturnScope expression641 =null;
		ParserRuleReturnScope expression643 =null;

		Object char_literal642_tree=null;
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:704:3: ( expression ( ',' expression )* -> ^( EXP_LIST ( expression )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:704:6: expression ( ',' expression )*
			{
			pushFollow(FOLLOW_expression_in_exprList5784);
			expression641=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression641.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:704:17: ( ',' expression )*
			loop60:
			while (true) {
				int alt60=2;
				int LA60_0 = input.LA(1);
				if ( (LA60_0==Comma) ) {
					alt60=1;
				}

				switch (alt60) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:704:18: ',' expression
					{
					char_literal642=(Token)match(input,Comma,FOLLOW_Comma_in_exprList5787); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal642);

					pushFollow(FOLLOW_expression_in_exprList5789);
					expression643=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression643.getTree());
					}
					break;

				default :
					break loop60;
				}
			}

			// AST REWRITE
			// elements: 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 = (Object)adaptor.nil();
			// 704:35: -> ^( EXP_LIST ( expression )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:704:38: ^( EXP_LIST ( expression )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP_LIST, "EXP_LIST"), 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 = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "exprList"


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


	// $ANTLR start "expression"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:707:1: expression : condExpr ;
	public final ReflexParser.expression_return expression() throws RecognitionException {
		ReflexParser.expression_return retval = new ReflexParser.expression_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope condExpr644 =null;



		  ReflexLexer.alias.push("Expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:714:3: ( condExpr )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:714:6: condExpr
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_condExpr_in_expression5823);
			condExpr644=condExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, condExpr644.getTree());

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "expression"


	public static class condExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "condExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:717:1: condExpr : ( orExpr -> orExpr ) ( '?' a= expression ':' b= expression -> ^( TERNARY[$a.start] orExpr $a $b) | In expression -> ^( In orExpr expression ) )? ;
	public final ReflexParser.condExpr_return condExpr() throws RecognitionException {
		ReflexParser.condExpr_return retval = new ReflexParser.condExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal646=null;
		Token char_literal647=null;
		Token In648=null;
		ParserRuleReturnScope a =null;
		ParserRuleReturnScope b =null;
		ParserRuleReturnScope orExpr645 =null;
		ParserRuleReturnScope expression649 =null;

		Object char_literal646_tree=null;
		Object char_literal647_tree=null;
		Object In648_tree=null;
		RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
		RewriteRuleTokenStream stream_QMark=new RewriteRuleTokenStream(adaptor,"token QMark");
		RewriteRuleTokenStream stream_Colon=new RewriteRuleTokenStream(adaptor,"token Colon");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_orExpr=new RewriteRuleSubtreeStream(adaptor,"rule orExpr");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:3: ( ( orExpr -> orExpr ) ( '?' a= expression ':' b= expression -> ^( TERNARY[$a.start] orExpr $a $b) | In expression -> ^( In orExpr expression ) )? )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:6: ( orExpr -> orExpr ) ( '?' a= expression ':' b= expression -> ^( TERNARY[$a.start] orExpr $a $b) | In expression -> ^( In orExpr expression ) )?
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:6: ( orExpr -> orExpr )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:7: orExpr
			{
			pushFollow(FOLLOW_orExpr_in_condExpr5838);
			orExpr645=orExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_orExpr.add(orExpr645.getTree());
			// AST REWRITE
			// elements: orExpr
			// 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 = (Object)adaptor.nil();
			// 718:14: -> orExpr
			{
				adaptor.addChild(root_0, stream_orExpr.nextTree());
			}


			retval.tree = root_0;
			}

			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:719:6: ( '?' a= expression ':' b= expression -> ^( TERNARY[$a.start] orExpr $a $b) | In expression -> ^( In orExpr expression ) )?
			int alt61=3;
			int LA61_0 = input.LA(1);
			if ( (LA61_0==QMark) ) {
				alt61=1;
			}
			else if ( (LA61_0==In) ) {
				alt61=2;
			}
			switch (alt61) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:720:8: '?' a= expression ':' b= expression
					{
					char_literal646=(Token)match(input,QMark,FOLLOW_QMark_in_condExpr5859); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QMark.add(char_literal646);

					pushFollow(FOLLOW_expression_in_condExpr5863);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal647=(Token)match(input,Colon,FOLLOW_Colon_in_condExpr5865); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Colon.add(char_literal647);

					pushFollow(FOLLOW_expression_in_condExpr5869);
					b=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(b.getTree());
					// AST REWRITE
					// elements: a, orExpr, b
					// token labels: 
					// rule labels: a, b, retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);
					RewriteRuleSubtreeStream stream_b=new RewriteRuleSubtreeStream(adaptor,"rule b",b!=null?b.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 720:42: -> ^( TERNARY[$a.start] orExpr $a $b)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:720:45: ^( TERNARY[$a.start] orExpr $a $b)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TERNARY, (a!=null?(a.start):null)), root_1);
						adaptor.addChild(root_1, stream_orExpr.nextTree());
						adaptor.addChild(root_1, stream_a.nextTree());
						adaptor.addChild(root_1, stream_b.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:721:8: In expression
					{
					In648=(Token)match(input,In,FOLLOW_In_in_condExpr5893); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_In.add(In648);

					pushFollow(FOLLOW_expression_in_condExpr5895);
					expression649=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression649.getTree());
					// AST REWRITE
					// elements: expression, orExpr, In
					// 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 = (Object)adaptor.nil();
					// 721:42: -> ^( In orExpr expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:721:45: ^( In orExpr expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_In.nextNode(), root_1);
						adaptor.addChild(root_1, stream_orExpr.nextTree());
						adaptor.addChild(root_1, stream_expression.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "condExpr"


	public static class orExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "orExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:725:1: orExpr : andExpr ( '||' ^ andExpr )* ;
	public final ReflexParser.orExpr_return orExpr() throws RecognitionException {
		ReflexParser.orExpr_return retval = new ReflexParser.orExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token string_literal651=null;
		ParserRuleReturnScope andExpr650 =null;
		ParserRuleReturnScope andExpr652 =null;

		Object string_literal651_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:726:3: ( andExpr ( '||' ^ andExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:726:6: andExpr ( '||' ^ andExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_andExpr_in_orExpr5947);
			andExpr650=andExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, andExpr650.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:726:14: ( '||' ^ andExpr )*
			loop62:
			while (true) {
				int alt62=2;
				int LA62_0 = input.LA(1);
				if ( (LA62_0==Or) ) {
					alt62=1;
				}

				switch (alt62) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:726:15: '||' ^ andExpr
					{
					string_literal651=(Token)match(input,Or,FOLLOW_Or_in_orExpr5950); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal651_tree = (Object)adaptor.create(string_literal651);
					root_0 = (Object)adaptor.becomeRoot(string_literal651_tree, root_0);
					}

					pushFollow(FOLLOW_andExpr_in_orExpr5953);
					andExpr652=andExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, andExpr652.getTree());

					}
					break;

				default :
					break loop62;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "orExpr"


	public static class andExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "andExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:729:1: andExpr : equExpr ( '&&' ^ equExpr )* ;
	public final ReflexParser.andExpr_return andExpr() throws RecognitionException {
		ReflexParser.andExpr_return retval = new ReflexParser.andExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token string_literal654=null;
		ParserRuleReturnScope equExpr653 =null;
		ParserRuleReturnScope equExpr655 =null;

		Object string_literal654_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:730:3: ( equExpr ( '&&' ^ equExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:730:6: equExpr ( '&&' ^ equExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_equExpr_in_andExpr5969);
			equExpr653=equExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, equExpr653.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:730:14: ( '&&' ^ equExpr )*
			loop63:
			while (true) {
				int alt63=2;
				int LA63_0 = input.LA(1);
				if ( (LA63_0==And) ) {
					alt63=1;
				}

				switch (alt63) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:730:15: '&&' ^ equExpr
					{
					string_literal654=(Token)match(input,And,FOLLOW_And_in_andExpr5972); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal654_tree = (Object)adaptor.create(string_literal654);
					root_0 = (Object)adaptor.becomeRoot(string_literal654_tree, root_0);
					}

					pushFollow(FOLLOW_equExpr_in_andExpr5975);
					equExpr655=equExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, equExpr655.getTree());

					}
					break;

				default :
					break loop63;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "andExpr"


	public static class equExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "equExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:733:1: equExpr : relExpr ( ( '==' | '!=' ) ^ relExpr )* ;
	public final ReflexParser.equExpr_return equExpr() throws RecognitionException {
		ReflexParser.equExpr_return retval = new ReflexParser.equExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set657=null;
		ParserRuleReturnScope relExpr656 =null;
		ParserRuleReturnScope relExpr658 =null;

		Object set657_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:734:3: ( relExpr ( ( '==' | '!=' ) ^ relExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:734:6: relExpr ( ( '==' | '!=' ) ^ relExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_relExpr_in_equExpr5991);
			relExpr656=relExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, relExpr656.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:734:14: ( ( '==' | '!=' ) ^ relExpr )*
			loop64:
			while (true) {
				int alt64=2;
				int LA64_0 = input.LA(1);
				if ( (LA64_0==Equals||LA64_0==NEquals) ) {
					alt64=1;
				}

				switch (alt64) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:734:15: ( '==' | '!=' ) ^ relExpr
					{
					set657=input.LT(1);
					set657=input.LT(1);
					if ( input.LA(1)==Equals||input.LA(1)==NEquals ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot((Object)adaptor.create(set657), 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_relExpr_in_equExpr6003);
					relExpr658=relExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, relExpr658.getTree());

					}
					break;

				default :
					break loop64;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "equExpr"


	public static class relExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "relExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:737:1: relExpr : addExpr ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )* ;
	public final ReflexParser.relExpr_return relExpr() throws RecognitionException {
		ReflexParser.relExpr_return retval = new ReflexParser.relExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set660=null;
		ParserRuleReturnScope addExpr659 =null;
		ParserRuleReturnScope addExpr661 =null;

		Object set660_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:738:3: ( addExpr ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:738:6: addExpr ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_addExpr_in_relExpr6019);
			addExpr659=addExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, addExpr659.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:738:14: ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )*
			loop65:
			while (true) {
				int alt65=2;
				int LA65_0 = input.LA(1);
				if ( ((LA65_0 >= GT && LA65_0 <= GTEquals)||(LA65_0 >= LT && LA65_0 <= LTEquals)) ) {
					alt65=1;
				}

				switch (alt65) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:738:15: ( '>=' | '<=' | '>' | '<' ) ^ addExpr
					{
					set660=input.LT(1);
					set660=input.LT(1);
					if ( (input.LA(1) >= GT && input.LA(1) <= GTEquals)||(input.LA(1) >= LT && input.LA(1) <= LTEquals) ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot((Object)adaptor.create(set660), 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_addExpr_in_relExpr6039);
					addExpr661=addExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, addExpr661.getTree());

					}
					break;

				default :
					break loop65;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "relExpr"


	public static class addExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "addExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:741:1: addExpr : mulExpr ( ( '+' | '-' ) ^ mulExpr )* ;
	public final ReflexParser.addExpr_return addExpr() throws RecognitionException {
		ReflexParser.addExpr_return retval = new ReflexParser.addExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set663=null;
		ParserRuleReturnScope mulExpr662 =null;
		ParserRuleReturnScope mulExpr664 =null;

		Object set663_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:3: ( mulExpr ( ( '+' | '-' ) ^ mulExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:6: mulExpr ( ( '+' | '-' ) ^ mulExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_mulExpr_in_addExpr6055);
			mulExpr662=mulExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, mulExpr662.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:14: ( ( '+' | '-' ) ^ mulExpr )*
			loop66:
			while (true) {
				int alt66=2;
				alt66 = dfa66.predict(input);
				switch (alt66) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:15: ( '+' | '-' ) ^ mulExpr
					{
					set663=input.LT(1);
					set663=input.LT(1);
					if ( input.LA(1)==Add||input.LA(1)==Subtract ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot((Object)adaptor.create(set663), 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_mulExpr_in_addExpr6067);
					mulExpr664=mulExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, mulExpr664.getTree());

					}
					break;

				default :
					break loop66;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "addExpr"


	public static class mulExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "mulExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:745:1: mulExpr : powExpr ( ( '*' | '/' | '%' ) ^ powExpr )* ;
	public final ReflexParser.mulExpr_return mulExpr() throws RecognitionException {
		ReflexParser.mulExpr_return retval = new ReflexParser.mulExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set666=null;
		ParserRuleReturnScope powExpr665 =null;
		ParserRuleReturnScope powExpr667 =null;

		Object set666_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:746:3: ( powExpr ( ( '*' | '/' | '%' ) ^ powExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:746:6: powExpr ( ( '*' | '/' | '%' ) ^ powExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_powExpr_in_mulExpr6083);
			powExpr665=powExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, powExpr665.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:746:14: ( ( '*' | '/' | '%' ) ^ powExpr )*
			loop67:
			while (true) {
				int alt67=2;
				int LA67_0 = input.LA(1);
				if ( (LA67_0==Divide||(LA67_0 >= Modulus && LA67_0 <= Multiply)) ) {
					alt67=1;
				}

				switch (alt67) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:746:15: ( '*' | '/' | '%' ) ^ powExpr
					{
					set666=input.LT(1);
					set666=input.LT(1);
					if ( input.LA(1)==Divide||(input.LA(1) >= Modulus && input.LA(1) <= Multiply) ) {
						input.consume();
						if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot((Object)adaptor.create(set666), 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_powExpr_in_mulExpr6099);
					powExpr667=powExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, powExpr667.getTree());

					}
					break;

				default :
					break loop67;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "mulExpr"


	public static class powExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "powExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:749:1: powExpr : unaryExpr ( '^' ^ unaryExpr )* ;
	public final ReflexParser.powExpr_return powExpr() throws RecognitionException {
		ReflexParser.powExpr_return retval = new ReflexParser.powExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal669=null;
		ParserRuleReturnScope unaryExpr668 =null;
		ParserRuleReturnScope unaryExpr670 =null;

		Object char_literal669_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:3: ( unaryExpr ( '^' ^ unaryExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:6: unaryExpr ( '^' ^ unaryExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_unaryExpr_in_powExpr6115);
			unaryExpr668=unaryExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpr668.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:16: ( '^' ^ unaryExpr )*
			loop68:
			while (true) {
				int alt68=2;
				int LA68_0 = input.LA(1);
				if ( (LA68_0==Pow) ) {
					alt68=1;
				}

				switch (alt68) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:17: '^' ^ unaryExpr
					{
					char_literal669=(Token)match(input,Pow,FOLLOW_Pow_in_powExpr6118); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal669_tree = (Object)adaptor.create(char_literal669);
					root_0 = (Object)adaptor.becomeRoot(char_literal669_tree, root_0);
					}

					pushFollow(FOLLOW_unaryExpr_in_powExpr6121);
					unaryExpr670=unaryExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpr670.getTree());

					}
					break;

				default :
					break loop68;
				}
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "powExpr"


	public static class unaryExpr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "unaryExpr"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:753:1: unaryExpr : ( '-' atom -> ^( UNARY_MIN[$atom.start] atom ) | '!' atom -> ^( NEGATE[$atom.start] atom ) | atom );
	public final ReflexParser.unaryExpr_return unaryExpr() throws RecognitionException {
		ReflexParser.unaryExpr_return retval = new ReflexParser.unaryExpr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal671=null;
		Token char_literal673=null;
		ParserRuleReturnScope atom672 =null;
		ParserRuleReturnScope atom674 =null;
		ParserRuleReturnScope atom675 =null;

		Object char_literal671_tree=null;
		Object char_literal673_tree=null;
		RewriteRuleTokenStream stream_Subtract=new RewriteRuleTokenStream(adaptor,"token Subtract");
		RewriteRuleTokenStream stream_Excl=new RewriteRuleTokenStream(adaptor,"token Excl");
		RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754:3: ( '-' atom -> ^( UNARY_MIN[$atom.start] atom ) | '!' atom -> ^( NEGATE[$atom.start] atom ) | atom )
			int alt69=3;
			switch ( input.LA(1) ) {
			case Subtract:
				{
				alt69=1;
				}
				break;
			case Excl:
				{
				alt69=2;
				}
				break;
			case All:
			case Any:
			case Archive:
			case Assert:
			case AsyncCall:
			case AsyncCallScript:
			case AsyncStatus:
			case B64Compress:
			case B64Decompress:
			case Bool:
			case Call:
			case Capabilities:
			case Cast:
			case Chain:
			case Close:
			case Collate:
			case Copy:
			case Date:
			case Debug:
			case Defined:
			case Delete:
			case Difference:
			case DottedIdentifier:
			case DropWhile:
			case Evals:
			case File:
			case FilterFn:
			case Fold:
			case Format:
			case FromJson:
			case GenSchema:
			case GenStruct:
			case GetCache:
			case GetCh:
			case GetLine:
			case HasCapability:
			case Identifier:
			case Integer:
			case IsFile:
			case IsFolder:
			case Join:
			case Json:
			case KernelIdentifier:
			case Keys:
			case Lib:
			case Long:
			case MD5:
			case MapFn:
			case Matches:
			case Merge:
			case MergeIf:
			case Message:
			case MkDir:
			case New:
			case Null:
			case Number:
			case OBrace:
			case OBracket:
			case OParen:
			case PackageIdentifier:
			case Port:
			case Print:
			case Println:
			case PropertyPlaceholder:
			case PutCache:
			case QuotedString:
			case RPull:
			case RPush:
			case Rand:
			case ReadDir:
			case Remove:
			case Replace:
			case Round:
			case Signal:
			case Size:
			case Sleep:
			case Sort:
			case Spawn:
			case Split:
			case SplitWith:
			case String:
			case Suspend:
			case SuspendWait:
			case TakeWhile:
			case Template:
			case Time:
			case Timer:
			case Transpose:
			case TypeOf:
			case Unique:
			case UrlDecode:
			case UrlEncode:
			case Uuid:
			case Vars:
			case Wait:
				{
				alt69=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 69, 0, input);
				throw nvae;
			}
			switch (alt69) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754:6: '-' atom
					{
					char_literal671=(Token)match(input,Subtract,FOLLOW_Subtract_in_unaryExpr6137); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Subtract.add(char_literal671);

					pushFollow(FOLLOW_atom_in_unaryExpr6139);
					atom672=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_atom.add(atom672.getTree());
					// AST REWRITE
					// elements: 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 = (Object)adaptor.nil();
					// 754:15: -> ^( UNARY_MIN[$atom.start] atom )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754:18: ^( UNARY_MIN[$atom.start] atom )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_MIN, (atom672!=null?(atom672.start):null)), root_1);
						adaptor.addChild(root_1, stream_atom.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:755:6: '!' atom
					{
					char_literal673=(Token)match(input,Excl,FOLLOW_Excl_in_unaryExpr6155); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Excl.add(char_literal673);

					pushFollow(FOLLOW_atom_in_unaryExpr6157);
					atom674=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_atom.add(atom674.getTree());
					// AST REWRITE
					// elements: 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 = (Object)adaptor.nil();
					// 755:15: -> ^( NEGATE[$atom.start] atom )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:755:18: ^( NEGATE[$atom.start] atom )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NEGATE, (atom674!=null?(atom674.start):null)), root_1);
						adaptor.addChild(root_1, stream_atom.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:6: atom
					{
					root_0 = (Object)adaptor.nil();


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

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "unaryExpr"


	public static class sparsesep_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "sparsesep"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:759:1: sparsesep : '-' ;
	public final ReflexParser.sparsesep_return sparsesep() throws RecognitionException {
		ReflexParser.sparsesep_return retval = new ReflexParser.sparsesep_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal676=null;

		Object char_literal676_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:759:10: ( '-' )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:760:4: '-'
			{
			root_0 = (Object)adaptor.nil();


			char_literal676=(Token)match(input,Subtract,FOLLOW_Subtract_in_sparsesep6186); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal676_tree = (Object)adaptor.create(char_literal676);
			adaptor.addChild(root_0, char_literal676_tree);
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "sparsesep"


	public static class sparsematrix_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "sparsematrix"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:762:1: sparsematrix : '[' ( sparsesep )+ ']' -> ^( SPARSE ( sparsesep )+ ) ;
	public final ReflexParser.sparsematrix_return sparsematrix() throws RecognitionException {
		ReflexParser.sparsematrix_return retval = new ReflexParser.sparsematrix_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal677=null;
		Token char_literal679=null;
		ParserRuleReturnScope sparsesep678 =null;

		Object char_literal677_tree=null;
		Object char_literal679_tree=null;
		RewriteRuleTokenStream stream_CBracket=new RewriteRuleTokenStream(adaptor,"token CBracket");
		RewriteRuleTokenStream stream_OBracket=new RewriteRuleTokenStream(adaptor,"token OBracket");
		RewriteRuleSubtreeStream stream_sparsesep=new RewriteRuleSubtreeStream(adaptor,"rule sparsesep");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:763:3: ( '[' ( sparsesep )+ ']' -> ^( SPARSE ( sparsesep )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:763:6: '[' ( sparsesep )+ ']'
			{
			char_literal677=(Token)match(input,OBracket,FOLLOW_OBracket_in_sparsematrix6197); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBracket.add(char_literal677);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:763:10: ( sparsesep )+
			int cnt70=0;
			loop70:
			while (true) {
				int alt70=2;
				int LA70_0 = input.LA(1);
				if ( (LA70_0==Subtract) ) {
					alt70=1;
				}

				switch (alt70) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:763:10: sparsesep
					{
					pushFollow(FOLLOW_sparsesep_in_sparsematrix6199);
					sparsesep678=sparsesep();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_sparsesep.add(sparsesep678.getTree());
					}
					break;

				default :
					if ( cnt70 >= 1 ) break loop70;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(70, input);
					throw eee;
				}
				cnt70++;
			}

			char_literal679=(Token)match(input,CBracket,FOLLOW_CBracket_in_sparsematrix6202); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBracket.add(char_literal679);

			// AST REWRITE
			// elements: sparsesep
			// 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 = (Object)adaptor.nil();
			// 763:25: -> ^( SPARSE ( sparsesep )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:763:28: ^( SPARSE ( sparsesep )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SPARSE, "SPARSE"), root_1);
				if ( !(stream_sparsesep.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_sparsesep.hasNext() ) {
					adaptor.addChild(root_1, stream_sparsesep.nextTree());
				}
				stream_sparsesep.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "sparsematrix"


	public static class atom_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "atom"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:766:1: atom : ( Integer | Long | Number | Bool | Null | sparsematrix | lookup );
	public final ReflexParser.atom_return atom() throws RecognitionException {
		ReflexParser.atom_return retval = new ReflexParser.atom_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token Integer680=null;
		Token Long681=null;
		Token Number682=null;
		Token Bool683=null;
		Token Null684=null;
		ParserRuleReturnScope sparsematrix685 =null;
		ParserRuleReturnScope lookup686 =null;

		Object Integer680_tree=null;
		Object Long681_tree=null;
		Object Number682_tree=null;
		Object Bool683_tree=null;
		Object Null684_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:767:3: ( Integer | Long | Number | Bool | Null | sparsematrix | lookup )
			int alt71=7;
			switch ( input.LA(1) ) {
			case Integer:
				{
				alt71=1;
				}
				break;
			case Long:
				{
				alt71=2;
				}
				break;
			case Number:
				{
				alt71=3;
				}
				break;
			case Bool:
				{
				alt71=4;
				}
				break;
			case Null:
				{
				alt71=5;
				}
				break;
			case OBracket:
				{
				int LA71_6 = input.LA(2);
				if ( (LA71_6==Subtract) ) {
					int LA71_8 = input.LA(3);
					if ( (LA71_8==CBracket||LA71_8==Subtract) ) {
						alt71=6;
					}
					else if ( (LA71_8==All||(LA71_8 >= Any && LA71_8 <= Archive)||LA71_8==Assert||(LA71_8 >= AsyncCall && LA71_8 <= AsyncCallScript)||(LA71_8 >= AsyncStatus && LA71_8 <= B64Decompress)||LA71_8==Bool||(LA71_8 >= Call && LA71_8 <= Capabilities)||LA71_8==Cast||(LA71_8 >= Chain && LA71_8 <= Collate)||LA71_8==Copy||(LA71_8 >= Date && LA71_8 <= Debug)||(LA71_8 >= Defined && LA71_8 <= Difference)||LA71_8==DottedIdentifier||LA71_8==DropWhile||LA71_8==Evals||(LA71_8 >= File && LA71_8 <= Fold)||(LA71_8 >= Format && LA71_8 <= FromJson)||(LA71_8 >= GenSchema && LA71_8 <= HasCapability)||LA71_8==Identifier||LA71_8==Integer||(LA71_8 >= IsFile && LA71_8 <= IsFolder)||(LA71_8 >= Join && LA71_8 <= Json)||(LA71_8 >= KernelIdentifier && LA71_8 <= Keys)||(LA71_8 >= Lib && LA71_8 <= Long)||LA71_8==MD5||LA71_8==MapFn||(LA71_8 >= Matches && LA71_8 <= MkDir)||(LA71_8 >= New && LA71_8 <= OParen)||LA71_8==PackageIdentifier||LA71_8==Port||(LA71_8 >= Print && LA71_8 <= PropertyPlaceholder)||LA71_8==PutCache||LA71_8==QuotedString||(LA71_8 >= RPull && LA71_8 <= Replace)||LA71_8==Round||LA71_8==Signal||(LA71_8 >= Size && LA71_8 <= Sort)||(LA71_8 >= Spawn && LA71_8 <= String)||(LA71_8 >= Suspend && LA71_8 <= SuspendWait)||(LA71_8 >= TakeWhile && LA71_8 <= Template)||(LA71_8 >= Time && LA71_8 <= Timer)||LA71_8==Transpose||LA71_8==TypeOf||LA71_8==Unique||(LA71_8 >= UrlDecode && LA71_8 <= UrlEncode)||(LA71_8 >= Uuid && LA71_8 <= Wait)) ) {
						alt71=7;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return retval;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 71, 8, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}
				else if ( (LA71_6==All||(LA71_6 >= Any && LA71_6 <= Archive)||LA71_6==Assert||(LA71_6 >= AsyncCall && LA71_6 <= AsyncCallScript)||(LA71_6 >= AsyncStatus && LA71_6 <= B64Decompress)||LA71_6==Bool||LA71_6==CBracket||(LA71_6 >= Call && LA71_6 <= Capabilities)||LA71_6==Cast||(LA71_6 >= Chain && LA71_6 <= Collate)||LA71_6==Copy||(LA71_6 >= Date && LA71_6 <= Debug)||(LA71_6 >= Defined && LA71_6 <= Difference)||LA71_6==DottedIdentifier||LA71_6==DropWhile||(LA71_6 >= Evals && LA71_6 <= Excl)||(LA71_6 >= File && LA71_6 <= Fold)||(LA71_6 >= Format && LA71_6 <= FromJson)||(LA71_6 >= GenSchema && LA71_6 <= HasCapability)||LA71_6==Identifier||LA71_6==Integer||(LA71_6 >= IsFile && LA71_6 <= IsFolder)||(LA71_6 >= Join && LA71_6 <= Json)||(LA71_6 >= KernelIdentifier && LA71_6 <= Keys)||(LA71_6 >= Lib && LA71_6 <= Long)||LA71_6==MD5||LA71_6==MapFn||(LA71_6 >= Matches && LA71_6 <= MkDir)||(LA71_6 >= New && LA71_6 <= OParen)||LA71_6==PackageIdentifier||LA71_6==Port||(LA71_6 >= Print && LA71_6 <= PropertyPlaceholder)||LA71_6==PutCache||LA71_6==QuotedString||(LA71_6 >= RPull && LA71_6 <= Replace)||LA71_6==Round||LA71_6==Signal||(LA71_6 >= Size && LA71_6 <= Sort)||(LA71_6 >= Spawn && LA71_6 <= String)||(LA71_6 >= Suspend && LA71_6 <= SuspendWait)||(LA71_6 >= TakeWhile && LA71_6 <= Template)||(LA71_6 >= Time && LA71_6 <= Timer)||LA71_6==Transpose||LA71_6==TypeOf||LA71_6==Unique||(LA71_6 >= UrlDecode && LA71_6 <= UrlEncode)||(LA71_6 >= Uuid && LA71_6 <= Wait)) ) {
					alt71=7;
				}

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

				}
				break;
			case All:
			case Any:
			case Archive:
			case Assert:
			case AsyncCall:
			case AsyncCallScript:
			case AsyncStatus:
			case B64Compress:
			case B64Decompress:
			case Call:
			case Capabilities:
			case Cast:
			case Chain:
			case Close:
			case Collate:
			case Copy:
			case Date:
			case Debug:
			case Defined:
			case Delete:
			case Difference:
			case DottedIdentifier:
			case DropWhile:
			case Evals:
			case File:
			case FilterFn:
			case Fold:
			case Format:
			case FromJson:
			case GenSchema:
			case GenStruct:
			case GetCache:
			case GetCh:
			case GetLine:
			case HasCapability:
			case Identifier:
			case IsFile:
			case IsFolder:
			case Join:
			case Json:
			case KernelIdentifier:
			case Keys:
			case Lib:
			case MD5:
			case MapFn:
			case Matches:
			case Merge:
			case MergeIf:
			case Message:
			case MkDir:
			case New:
			case OBrace:
			case OParen:
			case PackageIdentifier:
			case Port:
			case Print:
			case Println:
			case PropertyPlaceholder:
			case PutCache:
			case QuotedString:
			case RPull:
			case RPush:
			case Rand:
			case ReadDir:
			case Remove:
			case Replace:
			case Round:
			case Signal:
			case Size:
			case Sleep:
			case Sort:
			case Spawn:
			case Split:
			case SplitWith:
			case String:
			case Suspend:
			case SuspendWait:
			case TakeWhile:
			case Template:
			case Time:
			case Timer:
			case Transpose:
			case TypeOf:
			case Unique:
			case UrlDecode:
			case UrlEncode:
			case Uuid:
			case Vars:
			case Wait:
				{
				alt71=7;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 71, 0, input);
				throw nvae;
			}
			switch (alt71) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:767:6: Integer
					{
					root_0 = (Object)adaptor.nil();


					Integer680=(Token)match(input,Integer,FOLLOW_Integer_in_atom6225); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Integer680_tree = (Object)adaptor.create(Integer680);
					adaptor.addChild(root_0, Integer680_tree);
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:768:6: Long
					{
					root_0 = (Object)adaptor.nil();


					Long681=(Token)match(input,Long,FOLLOW_Long_in_atom6232); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Long681_tree = (Object)adaptor.create(Long681);
					adaptor.addChild(root_0, Long681_tree);
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:769:6: Number
					{
					root_0 = (Object)adaptor.nil();


					Number682=(Token)match(input,Number,FOLLOW_Number_in_atom6239); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Number682_tree = (Object)adaptor.create(Number682);
					adaptor.addChild(root_0, Number682_tree);
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:770:6: Bool
					{
					root_0 = (Object)adaptor.nil();


					Bool683=(Token)match(input,Bool,FOLLOW_Bool_in_atom6246); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Bool683_tree = (Object)adaptor.create(Bool683);
					adaptor.addChild(root_0, Bool683_tree);
					}

					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:771:6: Null
					{
					root_0 = (Object)adaptor.nil();


					Null684=(Token)match(input,Null,FOLLOW_Null_in_atom6253); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Null684_tree = (Object)adaptor.create(Null684);
					adaptor.addChild(root_0, Null684_tree);
					}

					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:772:6: sparsematrix
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_sparsematrix_in_atom6260);
					sparsematrix685=sparsematrix();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, sparsematrix685.getTree());

					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:773:6: lookup
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_lookup_in_atom6267);
					lookup686=lookup();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, lookup686.getTree());

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "atom"


	public static class list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "list"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:776:1: list : '[' ( exprList )? ']' -> ^( LIST ( exprList )? ) ;
	public final ReflexParser.list_return list() throws RecognitionException {
		ReflexParser.list_return retval = new ReflexParser.list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal687=null;
		Token char_literal689=null;
		ParserRuleReturnScope exprList688 =null;

		Object char_literal687_tree=null;
		Object char_literal689_tree=null;
		RewriteRuleTokenStream stream_CBracket=new RewriteRuleTokenStream(adaptor,"token CBracket");
		RewriteRuleTokenStream stream_OBracket=new RewriteRuleTokenStream(adaptor,"token OBracket");
		RewriteRuleSubtreeStream stream_exprList=new RewriteRuleSubtreeStream(adaptor,"rule exprList");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:777:3: ( '[' ( exprList )? ']' -> ^( LIST ( exprList )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:777:6: '[' ( exprList )? ']'
			{
			char_literal687=(Token)match(input,OBracket,FOLLOW_OBracket_in_list6281); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBracket.add(char_literal687);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:777:10: ( exprList )?
			int alt72=2;
			int LA72_0 = input.LA(1);
			if ( (LA72_0==All||(LA72_0 >= Any && LA72_0 <= Archive)||LA72_0==Assert||(LA72_0 >= AsyncCall && LA72_0 <= AsyncCallScript)||(LA72_0 >= AsyncStatus && LA72_0 <= B64Decompress)||LA72_0==Bool||(LA72_0 >= Call && LA72_0 <= Capabilities)||LA72_0==Cast||(LA72_0 >= Chain && LA72_0 <= Collate)||LA72_0==Copy||(LA72_0 >= Date && LA72_0 <= Debug)||(LA72_0 >= Defined && LA72_0 <= Difference)||LA72_0==DottedIdentifier||LA72_0==DropWhile||(LA72_0 >= Evals && LA72_0 <= Excl)||(LA72_0 >= File && LA72_0 <= Fold)||(LA72_0 >= Format && LA72_0 <= FromJson)||(LA72_0 >= GenSchema && LA72_0 <= HasCapability)||LA72_0==Identifier||LA72_0==Integer||(LA72_0 >= IsFile && LA72_0 <= IsFolder)||(LA72_0 >= Join && LA72_0 <= Json)||(LA72_0 >= KernelIdentifier && LA72_0 <= Keys)||(LA72_0 >= Lib && LA72_0 <= Long)||LA72_0==MD5||LA72_0==MapFn||(LA72_0 >= Matches && LA72_0 <= MkDir)||(LA72_0 >= New && LA72_0 <= OParen)||LA72_0==PackageIdentifier||LA72_0==Port||(LA72_0 >= Print && LA72_0 <= PropertyPlaceholder)||LA72_0==PutCache||LA72_0==QuotedString||(LA72_0 >= RPull && LA72_0 <= Replace)||LA72_0==Round||LA72_0==Signal||(LA72_0 >= Size && LA72_0 <= Sort)||(LA72_0 >= Spawn && LA72_0 <= String)||(LA72_0 >= Subtract && LA72_0 <= SuspendWait)||(LA72_0 >= TakeWhile && LA72_0 <= Template)||(LA72_0 >= Time && LA72_0 <= Timer)||LA72_0==Transpose||LA72_0==TypeOf||LA72_0==Unique||(LA72_0 >= UrlDecode && LA72_0 <= UrlEncode)||(LA72_0 >= Uuid && LA72_0 <= Wait)) ) {
				alt72=1;
			}
			switch (alt72) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:777:10: exprList
					{
					pushFollow(FOLLOW_exprList_in_list6283);
					exprList688=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList688.getTree());
					}
					break;

			}

			char_literal689=(Token)match(input,CBracket,FOLLOW_CBracket_in_list6286); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBracket.add(char_literal689);

			// AST REWRITE
			// elements: exprList
			// 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 = (Object)adaptor.nil();
			// 777:24: -> ^( LIST ( exprList )? )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:777:27: ^( LIST ( exprList )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LIST, "LIST"), root_1);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:777:34: ( exprList )?
				if ( stream_exprList.hasNext() ) {
					adaptor.addChild(root_1, stream_exprList.nextTree());
				}
				stream_exprList.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "list"


	public static class mapdef_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "mapdef"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:780:1: mapdef : '{' ( keyValList )? '}' -> ^( MAPDEF ( keyValList )? ) ;
	public final ReflexParser.mapdef_return mapdef() throws RecognitionException {
		ReflexParser.mapdef_return retval = new ReflexParser.mapdef_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal690=null;
		Token char_literal692=null;
		ParserRuleReturnScope keyValList691 =null;

		Object char_literal690_tree=null;
		Object char_literal692_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_CBrace=new RewriteRuleTokenStream(adaptor,"token CBrace");
		RewriteRuleSubtreeStream stream_keyValList=new RewriteRuleSubtreeStream(adaptor,"rule keyValList");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:781:3: ( '{' ( keyValList )? '}' -> ^( MAPDEF ( keyValList )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:781:6: '{' ( keyValList )? '}'
			{
			char_literal690=(Token)match(input,OBrace,FOLLOW_OBrace_in_mapdef6309); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBrace.add(char_literal690);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:781:10: ( keyValList )?
			int alt73=2;
			int LA73_0 = input.LA(1);
			if ( (LA73_0==All||(LA73_0 >= Any && LA73_0 <= Archive)||LA73_0==Assert||(LA73_0 >= AsyncCall && LA73_0 <= AsyncCallScript)||(LA73_0 >= AsyncStatus && LA73_0 <= B64Decompress)||LA73_0==Bool||(LA73_0 >= Call && LA73_0 <= Capabilities)||LA73_0==Cast||(LA73_0 >= Chain && LA73_0 <= Collate)||LA73_0==Copy||(LA73_0 >= Date && LA73_0 <= Debug)||(LA73_0 >= Defined && LA73_0 <= Difference)||LA73_0==DottedIdentifier||LA73_0==DropWhile||(LA73_0 >= Evals && LA73_0 <= Excl)||(LA73_0 >= File && LA73_0 <= Fold)||(LA73_0 >= Format && LA73_0 <= FromJson)||(LA73_0 >= GenSchema && LA73_0 <= HasCapability)||LA73_0==Identifier||LA73_0==Integer||(LA73_0 >= IsFile && LA73_0 <= IsFolder)||(LA73_0 >= Join && LA73_0 <= Json)||(LA73_0 >= KernelIdentifier && LA73_0 <= Keys)||(LA73_0 >= Lib && LA73_0 <= Long)||LA73_0==MD5||LA73_0==MapFn||(LA73_0 >= Matches && LA73_0 <= MkDir)||(LA73_0 >= New && LA73_0 <= OParen)||LA73_0==PackageIdentifier||LA73_0==Port||(LA73_0 >= Print && LA73_0 <= PropertyPlaceholder)||LA73_0==PutCache||LA73_0==QuotedString||(LA73_0 >= RPull && LA73_0 <= Replace)||LA73_0==Round||LA73_0==Signal||(LA73_0 >= Size && LA73_0 <= Sort)||(LA73_0 >= Spawn && LA73_0 <= String)||(LA73_0 >= Subtract && LA73_0 <= SuspendWait)||(LA73_0 >= TakeWhile && LA73_0 <= Template)||(LA73_0 >= Time && LA73_0 <= Timer)||LA73_0==Transpose||LA73_0==TypeOf||LA73_0==Unique||(LA73_0 >= UrlDecode && LA73_0 <= UrlEncode)||(LA73_0 >= Uuid && LA73_0 <= Wait)) ) {
				alt73=1;
			}
			switch (alt73) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:781:10: keyValList
					{
					pushFollow(FOLLOW_keyValList_in_mapdef6311);
					keyValList691=keyValList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_keyValList.add(keyValList691.getTree());
					}
					break;

			}

			char_literal692=(Token)match(input,CBrace,FOLLOW_CBrace_in_mapdef6314); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBrace.add(char_literal692);

			// AST REWRITE
			// elements: keyValList
			// 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 = (Object)adaptor.nil();
			// 781:26: -> ^( MAPDEF ( keyValList )? )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:781:29: ^( MAPDEF ( keyValList )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MAPDEF, "MAPDEF"), root_1);
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:781:38: ( keyValList )?
				if ( stream_keyValList.hasNext() ) {
					adaptor.addChild(root_1, stream_keyValList.nextTree());
				}
				stream_keyValList.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "mapdef"


	public static class keyValList_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "keyValList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:784:1: keyValList : keyVal ( ',' keyVal )* -> ^( KEYVAL_LIST ( keyVal )+ ) ;
	public final ReflexParser.keyValList_return keyValList() throws RecognitionException {
		ReflexParser.keyValList_return retval = new ReflexParser.keyValList_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal694=null;
		ParserRuleReturnScope keyVal693 =null;
		ParserRuleReturnScope keyVal695 =null;

		Object char_literal694_tree=null;
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleSubtreeStream stream_keyVal=new RewriteRuleSubtreeStream(adaptor,"rule keyVal");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:785:3: ( keyVal ( ',' keyVal )* -> ^( KEYVAL_LIST ( keyVal )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:785:6: keyVal ( ',' keyVal )*
			{
			pushFollow(FOLLOW_keyVal_in_keyValList6337);
			keyVal693=keyVal();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_keyVal.add(keyVal693.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:785:13: ( ',' keyVal )*
			loop74:
			while (true) {
				int alt74=2;
				int LA74_0 = input.LA(1);
				if ( (LA74_0==Comma) ) {
					alt74=1;
				}

				switch (alt74) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:785:14: ',' keyVal
					{
					char_literal694=(Token)match(input,Comma,FOLLOW_Comma_in_keyValList6340); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal694);

					pushFollow(FOLLOW_keyVal_in_keyValList6342);
					keyVal695=keyVal();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_keyVal.add(keyVal695.getTree());
					}
					break;

				default :
					break loop74;
				}
			}

			// AST REWRITE
			// elements: keyVal
			// 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 = (Object)adaptor.nil();
			// 785:27: -> ^( KEYVAL_LIST ( keyVal )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:785:30: ^( KEYVAL_LIST ( keyVal )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(KEYVAL_LIST, "KEYVAL_LIST"), root_1);
				if ( !(stream_keyVal.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_keyVal.hasNext() ) {
					adaptor.addChild(root_1, stream_keyVal.nextTree());
				}
				stream_keyVal.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "keyValList"


	public static class keyVal_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "keyVal"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:788:1: keyVal : k= expression ':' v= expression -> ^( KEYVAL[$k.start] $k $v) ;
	public final ReflexParser.keyVal_return keyVal() throws RecognitionException {
		ReflexParser.keyVal_return retval = new ReflexParser.keyVal_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal696=null;
		ParserRuleReturnScope k =null;
		ParserRuleReturnScope v =null;

		Object char_literal696_tree=null;
		RewriteRuleTokenStream stream_Colon=new RewriteRuleTokenStream(adaptor,"token Colon");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:789:3: (k= expression ':' v= expression -> ^( KEYVAL[$k.start] $k $v) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:789:6: k= expression ':' v= expression
			{
			pushFollow(FOLLOW_expression_in_keyVal6369);
			k=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(k.getTree());
			char_literal696=(Token)match(input,Colon,FOLLOW_Colon_in_keyVal6371); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Colon.add(char_literal696);

			pushFollow(FOLLOW_expression_in_keyVal6375);
			v=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(v.getTree());
			// AST REWRITE
			// elements: k, v
			// token labels: 
			// rule labels: v, k, retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_v=new RewriteRuleSubtreeStream(adaptor,"rule v",v!=null?v.getTree():null);
			RewriteRuleSubtreeStream stream_k=new RewriteRuleSubtreeStream(adaptor,"rule k",k!=null?k.getTree():null);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 789:36: -> ^( KEYVAL[$k.start] $k $v)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:789:39: ^( KEYVAL[$k.start] $k $v)
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(KEYVAL, (k!=null?(k.start):null)), root_1);
				adaptor.addChild(root_1, stream_k.nextTree());
				adaptor.addChild(root_1, stream_v.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "keyVal"


	public static class jarUriList_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "jarUriList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:792:1: jarUriList : OParen jarUri ( ',' jarUri )* CParen -> ^( JARURI_LIST ( jarUri )+ ) ;
	public final ReflexParser.jarUriList_return jarUriList() throws RecognitionException {
		ReflexParser.jarUriList_return retval = new ReflexParser.jarUriList_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token OParen697=null;
		Token char_literal699=null;
		Token CParen701=null;
		ParserRuleReturnScope jarUri698 =null;
		ParserRuleReturnScope jarUri700 =null;

		Object OParen697_tree=null;
		Object char_literal699_tree=null;
		Object CParen701_tree=null;
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleSubtreeStream stream_jarUri=new RewriteRuleSubtreeStream(adaptor,"rule jarUri");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:793:3: ( OParen jarUri ( ',' jarUri )* CParen -> ^( JARURI_LIST ( jarUri )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:793:5: OParen jarUri ( ',' jarUri )* CParen
			{
			OParen697=(Token)match(input,OParen,FOLLOW_OParen_in_jarUriList6401); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OParen.add(OParen697);

			pushFollow(FOLLOW_jarUri_in_jarUriList6403);
			jarUri698=jarUri();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_jarUri.add(jarUri698.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:793:19: ( ',' jarUri )*
			loop75:
			while (true) {
				int alt75=2;
				int LA75_0 = input.LA(1);
				if ( (LA75_0==Comma) ) {
					alt75=1;
				}

				switch (alt75) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:793:20: ',' jarUri
					{
					char_literal699=(Token)match(input,Comma,FOLLOW_Comma_in_jarUriList6406); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal699);

					pushFollow(FOLLOW_jarUri_in_jarUriList6408);
					jarUri700=jarUri();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_jarUri.add(jarUri700.getTree());
					}
					break;

				default :
					break loop75;
				}
			}

			CParen701=(Token)match(input,CParen,FOLLOW_CParen_in_jarUriList6412); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CParen.add(CParen701);

			// AST REWRITE
			// elements: jarUri
			// 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 = (Object)adaptor.nil();
			// 793:40: -> ^( JARURI_LIST ( jarUri )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:793:43: ^( JARURI_LIST ( jarUri )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(JARURI_LIST, "JARURI_LIST"), root_1);
				if ( !(stream_jarUri.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_jarUri.hasNext() ) {
					adaptor.addChild(root_1, stream_jarUri.nextTree());
				}
				stream_jarUri.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "jarUriList"


	public static class jarUri_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "jarUri"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:796:1: jarUri : (j= String |j= QuotedString ) -> ^( JARURI $j) ;
	public final ReflexParser.jarUri_return jarUri() throws RecognitionException {
		ReflexParser.jarUri_return retval = new ReflexParser.jarUri_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token j=null;

		Object j_tree=null;
		RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");
		RewriteRuleTokenStream stream_QuotedString=new RewriteRuleTokenStream(adaptor,"token QuotedString");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:797:3: ( (j= String |j= QuotedString ) -> ^( JARURI $j) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:797:6: (j= String |j= QuotedString )
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:797:6: (j= String |j= QuotedString )
			int alt76=2;
			int LA76_0 = input.LA(1);
			if ( (LA76_0==String) ) {
				alt76=1;
			}
			else if ( (LA76_0==QuotedString) ) {
				alt76=2;
			}

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

			switch (alt76) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:797:7: j= String
					{
					j=(Token)match(input,String,FOLLOW_String_in_jarUri6440); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_String.add(j);

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:797:18: j= QuotedString
					{
					j=(Token)match(input,QuotedString,FOLLOW_QuotedString_in_jarUri6446); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QuotedString.add(j);

					}
					break;

			}

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

			root_0 = (Object)adaptor.nil();
			// 797:34: -> ^( JARURI $j)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:797:37: ^( JARURI $j)
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(JARURI, "JARURI"), root_1);
				adaptor.addChild(root_1, stream_j.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "jarUri"


	public static class lookup_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "lookup"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:800:1: lookup : ( functionCall ( indexes )? -> ^( LOOKUP[$functionCall.start] functionCall ( indexes )? ) | PropertyPlaceholder -> ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder ) | Identifier rangeindex -> ^( RANGELOOKUP[$Identifier] Identifier rangeindex ) | DottedIdentifier rangeindex -> ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex ) | list ( indexes )? -> ^( LOOKUP[$list.start] list ( indexes )? ) | mapdef ( indexes )? -> ^( LOOKUP[$mapdef.start] mapdef ( indexes )? ) | DottedIdentifier ( indexes )? -> ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? ) | Identifier ( indexes )? -> ^( LOOKUP[$Identifier] Identifier ( indexes )? ) | String ( indexes )? -> ^( LOOKUP[$String] String ( indexes )? ) | QuotedString ( indexes )? -> ^( LOOKUP[$QuotedString] QuotedString ( indexes )? ) | '(' expression ')' ( indexes )? -> ^( LOOKUP[$expression.start] expression ( indexes )? ) );
	public final ReflexParser.lookup_return lookup() throws RecognitionException {
		ReflexParser.lookup_return retval = new ReflexParser.lookup_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PropertyPlaceholder704=null;
		Token Identifier705=null;
		Token DottedIdentifier707=null;
		Token DottedIdentifier713=null;
		Token Identifier715=null;
		Token String717=null;
		Token QuotedString719=null;
		Token char_literal721=null;
		Token char_literal723=null;
		ParserRuleReturnScope functionCall702 =null;
		ParserRuleReturnScope indexes703 =null;
		ParserRuleReturnScope rangeindex706 =null;
		ParserRuleReturnScope rangeindex708 =null;
		ParserRuleReturnScope list709 =null;
		ParserRuleReturnScope indexes710 =null;
		ParserRuleReturnScope mapdef711 =null;
		ParserRuleReturnScope indexes712 =null;
		ParserRuleReturnScope indexes714 =null;
		ParserRuleReturnScope indexes716 =null;
		ParserRuleReturnScope indexes718 =null;
		ParserRuleReturnScope indexes720 =null;
		ParserRuleReturnScope expression722 =null;
		ParserRuleReturnScope indexes724 =null;

		Object PropertyPlaceholder704_tree=null;
		Object Identifier705_tree=null;
		Object DottedIdentifier707_tree=null;
		Object DottedIdentifier713_tree=null;
		Object Identifier715_tree=null;
		Object String717_tree=null;
		Object QuotedString719_tree=null;
		Object char_literal721_tree=null;
		Object char_literal723_tree=null;
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_PropertyPlaceholder=new RewriteRuleTokenStream(adaptor,"token PropertyPlaceholder");
		RewriteRuleTokenStream stream_DottedIdentifier=new RewriteRuleTokenStream(adaptor,"token DottedIdentifier");
		RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");
		RewriteRuleTokenStream stream_QuotedString=new RewriteRuleTokenStream(adaptor,"token QuotedString");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleSubtreeStream stream_mapdef=new RewriteRuleSubtreeStream(adaptor,"rule mapdef");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_indexes=new RewriteRuleSubtreeStream(adaptor,"rule indexes");
		RewriteRuleSubtreeStream stream_functionCall=new RewriteRuleSubtreeStream(adaptor,"rule functionCall");
		RewriteRuleSubtreeStream stream_list=new RewriteRuleSubtreeStream(adaptor,"rule list");
		RewriteRuleSubtreeStream stream_rangeindex=new RewriteRuleSubtreeStream(adaptor,"rule rangeindex");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:3: ( functionCall ( indexes )? -> ^( LOOKUP[$functionCall.start] functionCall ( indexes )? ) | PropertyPlaceholder -> ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder ) | Identifier rangeindex -> ^( RANGELOOKUP[$Identifier] Identifier rangeindex ) | DottedIdentifier rangeindex -> ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex ) | list ( indexes )? -> ^( LOOKUP[$list.start] list ( indexes )? ) | mapdef ( indexes )? -> ^( LOOKUP[$mapdef.start] mapdef ( indexes )? ) | DottedIdentifier ( indexes )? -> ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? ) | Identifier ( indexes )? -> ^( LOOKUP[$Identifier] Identifier ( indexes )? ) | String ( indexes )? -> ^( LOOKUP[$String] String ( indexes )? ) | QuotedString ( indexes )? -> ^( LOOKUP[$QuotedString] QuotedString ( indexes )? ) | '(' expression ')' ( indexes )? -> ^( LOOKUP[$expression.start] expression ( indexes )? ) )
			int alt85=11;
			alt85 = dfa85.predict(input);
			switch (alt85) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:6: functionCall ( indexes )?
					{
					pushFollow(FOLLOW_functionCall_in_lookup6470);
					functionCall702=functionCall();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_functionCall.add(functionCall702.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:19: ( indexes )?
					int alt77=2;
					alt77 = dfa77.predict(input);
					switch (alt77) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:19: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6472);
							indexes703=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes703.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: functionCall, indexes
					// 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 = (Object)adaptor.nil();
					// 801:34: -> ^( LOOKUP[$functionCall.start] functionCall ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:37: ^( LOOKUP[$functionCall.start] functionCall ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (functionCall702!=null?(functionCall702.start):null)), root_1);
						adaptor.addChild(root_1, stream_functionCall.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:80: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:802:6: PropertyPlaceholder
					{
					PropertyPlaceholder704=(Token)match(input,PropertyPlaceholder,FOLLOW_PropertyPlaceholder_in_lookup6498); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PropertyPlaceholder.add(PropertyPlaceholder704);

					// AST REWRITE
					// elements: PropertyPlaceholder
					// 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 = (Object)adaptor.nil();
					// 802:34: -> ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:802:37: ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, PropertyPlaceholder704), root_1);
						adaptor.addChild(root_1, stream_PropertyPlaceholder.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:803:6: Identifier rangeindex
					{
					Identifier705=(Token)match(input,Identifier,FOLLOW_Identifier_in_lookup6522); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier705);

					pushFollow(FOLLOW_rangeindex_in_lookup6524);
					rangeindex706=rangeindex();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_rangeindex.add(rangeindex706.getTree());
					// AST REWRITE
					// elements: rangeindex, Identifier
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 803:34: -> ^( RANGELOOKUP[$Identifier] Identifier rangeindex )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:803:37: ^( RANGELOOKUP[$Identifier] Identifier rangeindex )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RANGELOOKUP, Identifier705), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						adaptor.addChild(root_1, stream_rangeindex.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:804:6: DottedIdentifier rangeindex
					{
					DottedIdentifier707=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_lookup6548); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DottedIdentifier.add(DottedIdentifier707);

					pushFollow(FOLLOW_rangeindex_in_lookup6550);
					rangeindex708=rangeindex();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_rangeindex.add(rangeindex708.getTree());
					// AST REWRITE
					// elements: rangeindex, DottedIdentifier
					// 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 = (Object)adaptor.nil();
					// 804:34: -> ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:804:37: ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RANGELOOKUP, DottedIdentifier707), root_1);
						adaptor.addChild(root_1, stream_DottedIdentifier.nextNode());
						adaptor.addChild(root_1, stream_rangeindex.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:6: list ( indexes )?
					{
					pushFollow(FOLLOW_list_in_lookup6568);
					list709=list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_list.add(list709.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:11: ( indexes )?
					int alt78=2;
					alt78 = dfa78.predict(input);
					switch (alt78) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:11: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6570);
							indexes710=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes710.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: indexes, list
					// 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 = (Object)adaptor.nil();
					// 805:34: -> ^( LOOKUP[$list.start] list ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:37: ^( LOOKUP[$list.start] list ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (list709!=null?(list709.start):null)), root_1);
						adaptor.addChild(root_1, stream_list.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:64: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:6: mapdef ( indexes )?
					{
					pushFollow(FOLLOW_mapdef_in_lookup6604);
					mapdef711=mapdef();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_mapdef.add(mapdef711.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:13: ( indexes )?
					int alt79=2;
					alt79 = dfa79.predict(input);
					switch (alt79) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:13: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6606);
							indexes712=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes712.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: mapdef, indexes
					// 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 = (Object)adaptor.nil();
					// 806:34: -> ^( LOOKUP[$mapdef.start] mapdef ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:37: ^( LOOKUP[$mapdef.start] mapdef ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (mapdef711!=null?(mapdef711.start):null)), root_1);
						adaptor.addChild(root_1, stream_mapdef.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:68: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:6: DottedIdentifier ( indexes )?
					{
					DottedIdentifier713=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_lookup6638); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DottedIdentifier.add(DottedIdentifier713);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:23: ( indexes )?
					int alt80=2;
					alt80 = dfa80.predict(input);
					switch (alt80) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:23: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6640);
							indexes714=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes714.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: DottedIdentifier, indexes
					// 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 = (Object)adaptor.nil();
					// 807:34: -> ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:37: ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, DottedIdentifier713), root_1);
						adaptor.addChild(root_1, stream_DottedIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:82: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:6: Identifier ( indexes )?
					{
					Identifier715=(Token)match(input,Identifier,FOLLOW_Identifier_in_lookup6662); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier715);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:17: ( indexes )?
					int alt81=2;
					alt81 = dfa81.predict(input);
					switch (alt81) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:17: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6664);
							indexes716=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes716.getTree());
							}
							break;

					}

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

					root_0 = (Object)adaptor.nil();
					// 808:34: -> ^( LOOKUP[$Identifier] Identifier ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:37: ^( LOOKUP[$Identifier] Identifier ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, Identifier715), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:70: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:6: String ( indexes )?
					{
					String717=(Token)match(input,String,FOLLOW_String_in_lookup6692); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_String.add(String717);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:13: ( indexes )?
					int alt82=2;
					alt82 = dfa82.predict(input);
					switch (alt82) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:13: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6694);
							indexes718=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes718.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: String, indexes
					// 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 = (Object)adaptor.nil();
					// 809:34: -> ^( LOOKUP[$String] String ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:37: ^( LOOKUP[$String] String ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, String717), root_1);
						adaptor.addChild(root_1, stream_String.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:62: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:6: QuotedString ( indexes )?
					{
					QuotedString719=(Token)match(input,QuotedString,FOLLOW_QuotedString_in_lookup6726); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QuotedString.add(QuotedString719);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:19: ( indexes )?
					int alt83=2;
					alt83 = dfa83.predict(input);
					switch (alt83) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:19: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6728);
							indexes720=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes720.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: QuotedString, indexes
					// 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 = (Object)adaptor.nil();
					// 810:34: -> ^( LOOKUP[$QuotedString] QuotedString ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:37: ^( LOOKUP[$QuotedString] QuotedString ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, QuotedString719), root_1);
						adaptor.addChild(root_1, stream_QuotedString.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:74: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:6: '(' expression ')' ( indexes )?
					{
					char_literal721=(Token)match(input,OParen,FOLLOW_OParen_in_lookup6754); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal721);

					pushFollow(FOLLOW_expression_in_lookup6756);
					expression722=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression722.getTree());
					char_literal723=(Token)match(input,CParen,FOLLOW_CParen_in_lookup6758); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal723);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:25: ( indexes )?
					int alt84=2;
					alt84 = dfa84.predict(input);
					switch (alt84) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:25: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6760);
							indexes724=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes724.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: expression, indexes
					// 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 = (Object)adaptor.nil();
					// 811:34: -> ^( LOOKUP[$expression.start] expression ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:37: ^( LOOKUP[$expression.start] expression ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (expression722!=null?(expression722.start):null)), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:76: ( indexes )?
						if ( stream_indexes.hasNext() ) {
							adaptor.addChild(root_1, stream_indexes.nextTree());
						}
						stream_indexes.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "lookup"


	public static class indexes_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "indexes"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:814:1: indexes : ( '[' exprList ']' )+ -> ^( INDEXES ( exprList )+ ) ;
	public final ReflexParser.indexes_return indexes() throws RecognitionException {
		ReflexParser.indexes_return retval = new ReflexParser.indexes_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal725=null;
		Token char_literal727=null;
		ParserRuleReturnScope exprList726 =null;

		Object char_literal725_tree=null;
		Object char_literal727_tree=null;
		RewriteRuleTokenStream stream_CBracket=new RewriteRuleTokenStream(adaptor,"token CBracket");
		RewriteRuleTokenStream stream_OBracket=new RewriteRuleTokenStream(adaptor,"token OBracket");
		RewriteRuleSubtreeStream stream_exprList=new RewriteRuleSubtreeStream(adaptor,"rule exprList");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:3: ( ( '[' exprList ']' )+ -> ^( INDEXES ( exprList )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:6: ( '[' exprList ']' )+
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:6: ( '[' exprList ']' )+
			int cnt86=0;
			loop86:
			while (true) {
				int alt86=2;
				alt86 = dfa86.predict(input);
				switch (alt86) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:7: '[' exprList ']'
					{
					char_literal725=(Token)match(input,OBracket,FOLLOW_OBracket_in_indexes6788); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBracket.add(char_literal725);

					pushFollow(FOLLOW_exprList_in_indexes6790);
					exprList726=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList726.getTree());
					char_literal727=(Token)match(input,CBracket,FOLLOW_CBracket_in_indexes6792); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBracket.add(char_literal727);

					}
					break;

				default :
					if ( cnt86 >= 1 ) break loop86;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(86, input);
					throw eee;
				}
				cnt86++;
			}

			// AST REWRITE
			// elements: exprList
			// 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 = (Object)adaptor.nil();
			// 815:26: -> ^( INDEXES ( exprList )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:29: ^( INDEXES ( exprList )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INDEXES, "INDEXES"), root_1);
				if ( !(stream_exprList.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_exprList.hasNext() ) {
					adaptor.addChild(root_1, stream_exprList.nextTree());
				}
				stream_exprList.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "indexes"


	public static class rangeindex_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "rangeindex"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:818:1: rangeindex : '[' (from= expression )? '..' (to= expression )? ']' -> ^( RANGEINDEX $from $to) ;
	public final ReflexParser.rangeindex_return rangeindex() throws RecognitionException {
		ReflexParser.rangeindex_return retval = new ReflexParser.rangeindex_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token char_literal728=null;
		Token string_literal729=null;
		Token char_literal730=null;
		ParserRuleReturnScope from =null;
		ParserRuleReturnScope to =null;

		Object char_literal728_tree=null;
		Object string_literal729_tree=null;
		Object char_literal730_tree=null;
		RewriteRuleTokenStream stream_223=new RewriteRuleTokenStream(adaptor,"token 223");
		RewriteRuleTokenStream stream_CBracket=new RewriteRuleTokenStream(adaptor,"token CBracket");
		RewriteRuleTokenStream stream_OBracket=new RewriteRuleTokenStream(adaptor,"token OBracket");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:3: ( '[' (from= expression )? '..' (to= expression )? ']' -> ^( RANGEINDEX $from $to) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:6: '[' (from= expression )? '..' (to= expression )? ']'
			{
			char_literal728=(Token)match(input,OBracket,FOLLOW_OBracket_in_rangeindex6817); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBracket.add(char_literal728);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:14: (from= expression )?
			int alt87=2;
			int LA87_0 = input.LA(1);
			if ( (LA87_0==All||(LA87_0 >= Any && LA87_0 <= Archive)||LA87_0==Assert||(LA87_0 >= AsyncCall && LA87_0 <= AsyncCallScript)||(LA87_0 >= AsyncStatus && LA87_0 <= B64Decompress)||LA87_0==Bool||(LA87_0 >= Call && LA87_0 <= Capabilities)||LA87_0==Cast||(LA87_0 >= Chain && LA87_0 <= Collate)||LA87_0==Copy||(LA87_0 >= Date && LA87_0 <= Debug)||(LA87_0 >= Defined && LA87_0 <= Difference)||LA87_0==DottedIdentifier||LA87_0==DropWhile||(LA87_0 >= Evals && LA87_0 <= Excl)||(LA87_0 >= File && LA87_0 <= Fold)||(LA87_0 >= Format && LA87_0 <= FromJson)||(LA87_0 >= GenSchema && LA87_0 <= HasCapability)||LA87_0==Identifier||LA87_0==Integer||(LA87_0 >= IsFile && LA87_0 <= IsFolder)||(LA87_0 >= Join && LA87_0 <= Json)||(LA87_0 >= KernelIdentifier && LA87_0 <= Keys)||(LA87_0 >= Lib && LA87_0 <= Long)||LA87_0==MD5||LA87_0==MapFn||(LA87_0 >= Matches && LA87_0 <= MkDir)||(LA87_0 >= New && LA87_0 <= OParen)||LA87_0==PackageIdentifier||LA87_0==Port||(LA87_0 >= Print && LA87_0 <= PropertyPlaceholder)||LA87_0==PutCache||LA87_0==QuotedString||(LA87_0 >= RPull && LA87_0 <= Replace)||LA87_0==Round||LA87_0==Signal||(LA87_0 >= Size && LA87_0 <= Sort)||(LA87_0 >= Spawn && LA87_0 <= String)||(LA87_0 >= Subtract && LA87_0 <= SuspendWait)||(LA87_0 >= TakeWhile && LA87_0 <= Template)||(LA87_0 >= Time && LA87_0 <= Timer)||LA87_0==Transpose||LA87_0==TypeOf||LA87_0==Unique||(LA87_0 >= UrlDecode && LA87_0 <= UrlEncode)||(LA87_0 >= Uuid && LA87_0 <= Wait)) ) {
				alt87=1;
			}
			switch (alt87) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:14: from= expression
					{
					pushFollow(FOLLOW_expression_in_rangeindex6821);
					from=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(from.getTree());
					}
					break;

			}

			string_literal729=(Token)match(input,223,FOLLOW_223_in_rangeindex6824); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_223.add(string_literal729);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:34: (to= expression )?
			int alt88=2;
			int LA88_0 = input.LA(1);
			if ( (LA88_0==All||(LA88_0 >= Any && LA88_0 <= Archive)||LA88_0==Assert||(LA88_0 >= AsyncCall && LA88_0 <= AsyncCallScript)||(LA88_0 >= AsyncStatus && LA88_0 <= B64Decompress)||LA88_0==Bool||(LA88_0 >= Call && LA88_0 <= Capabilities)||LA88_0==Cast||(LA88_0 >= Chain && LA88_0 <= Collate)||LA88_0==Copy||(LA88_0 >= Date && LA88_0 <= Debug)||(LA88_0 >= Defined && LA88_0 <= Difference)||LA88_0==DottedIdentifier||LA88_0==DropWhile||(LA88_0 >= Evals && LA88_0 <= Excl)||(LA88_0 >= File && LA88_0 <= Fold)||(LA88_0 >= Format && LA88_0 <= FromJson)||(LA88_0 >= GenSchema && LA88_0 <= HasCapability)||LA88_0==Identifier||LA88_0==Integer||(LA88_0 >= IsFile && LA88_0 <= IsFolder)||(LA88_0 >= Join && LA88_0 <= Json)||(LA88_0 >= KernelIdentifier && LA88_0 <= Keys)||(LA88_0 >= Lib && LA88_0 <= Long)||LA88_0==MD5||LA88_0==MapFn||(LA88_0 >= Matches && LA88_0 <= MkDir)||(LA88_0 >= New && LA88_0 <= OParen)||LA88_0==PackageIdentifier||LA88_0==Port||(LA88_0 >= Print && LA88_0 <= PropertyPlaceholder)||LA88_0==PutCache||LA88_0==QuotedString||(LA88_0 >= RPull && LA88_0 <= Replace)||LA88_0==Round||LA88_0==Signal||(LA88_0 >= Size && LA88_0 <= Sort)||(LA88_0 >= Spawn && LA88_0 <= String)||(LA88_0 >= Subtract && LA88_0 <= SuspendWait)||(LA88_0 >= TakeWhile && LA88_0 <= Template)||(LA88_0 >= Time && LA88_0 <= Timer)||LA88_0==Transpose||LA88_0==TypeOf||LA88_0==Unique||(LA88_0 >= UrlDecode && LA88_0 <= UrlEncode)||(LA88_0 >= Uuid && LA88_0 <= Wait)) ) {
				alt88=1;
			}
			switch (alt88) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:34: to= expression
					{
					pushFollow(FOLLOW_expression_in_rangeindex6828);
					to=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(to.getTree());
					}
					break;

			}

			char_literal730=(Token)match(input,CBracket,FOLLOW_CBracket_in_rangeindex6831); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBracket.add(char_literal730);

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

			root_0 = (Object)adaptor.nil();
			// 819:51: -> ^( RANGEINDEX $from $to)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:819:54: ^( RANGEINDEX $from $to)
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RANGEINDEX, "RANGEINDEX"), root_1);
				adaptor.addChild(root_1, stream_from.nextTree());
				adaptor.addChild(root_1, stream_to.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

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

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

		  catch(RecognitionException e) {
		      reportError(e);
		      throw e;
		  }

		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "rangeindex"

	// $ANTLR start synpred11_Reflex
	public final void synpred11_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:8: ( statement )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:8: statement
		{
		pushFollow(FOLLOW_statement_in_synpred11_Reflex536);
		statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred11_Reflex

	// $ANTLR start synpred12_Reflex
	public final void synpred12_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:20: ( functionDecl )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:20: functionDecl
		{
		pushFollow(FOLLOW_functionDecl_in_synpred12_Reflex540);
		functionDecl();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred12_Reflex

	// $ANTLR start synpred13_Reflex
	public final void synpred13_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:35: ( structureDecl )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:35: structureDecl
		{
		pushFollow(FOLLOW_structureDecl_in_synpred13_Reflex544);
		structureDecl();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred13_Reflex

	// $ANTLR start synpred14_Reflex
	public final void synpred14_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:54: ( Return expression ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:364:54: Return expression ';'
		{
		match(input,Return,FOLLOW_Return_in_synpred14_Reflex551); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred14_Reflex553);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred14_Reflex555); if (state.failed) return;

		}

	}
	// $ANTLR end synpred14_Reflex

	// $ANTLR start synpred15_Reflex
	public final void synpred15_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:369:15: ( assignment ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:369:15: assignment ';'
		{
		pushFollow(FOLLOW_assignment_in_synpred15_Reflex598);
		assignment();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred15_Reflex600); if (state.failed) return;

		}

	}
	// $ANTLR end synpred15_Reflex

	// $ANTLR start synpred17_Reflex
	public final void synpred17_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:371:6: ( port ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:371:6: port ';'
		{
		pushFollow(FOLLOW_port_in_synpred17_Reflex626);
		port();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred17_Reflex628); if (state.failed) return;

		}

	}
	// $ANTLR end synpred17_Reflex

	// $ANTLR start synpred18_Reflex
	public final void synpred18_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:372:6: ( pull ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:372:6: pull ';'
		{
		pushFollow(FOLLOW_pull_in_synpred18_Reflex639);
		pull();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred18_Reflex641); if (state.failed) return;

		}

	}
	// $ANTLR end synpred18_Reflex

	// $ANTLR start synpred19_Reflex
	public final void synpred19_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:373:6: ( metapull ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:373:6: metapull ';'
		{
		pushFollow(FOLLOW_metapull_in_synpred19_Reflex652);
		metapull();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred19_Reflex654); if (state.failed) return;

		}

	}
	// $ANTLR end synpred19_Reflex

	// $ANTLR start synpred20_Reflex
	public final void synpred20_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:374:6: ( push ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:374:6: push ';'
		{
		pushFollow(FOLLOW_push_in_synpred20_Reflex665);
		push();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred20_Reflex667); if (state.failed) return;

		}

	}
	// $ANTLR end synpred20_Reflex

	// $ANTLR start synpred21_Reflex
	public final void synpred21_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:375:6: ( patchStatement )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:375:6: patchStatement
		{
		pushFollow(FOLLOW_patchStatement_in_synpred21_Reflex678);
		patchStatement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred21_Reflex

	// $ANTLR start synpred22_Reflex
	public final void synpred22_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:376:6: ( functionCall ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:376:6: functionCall ';'
		{
		pushFollow(FOLLOW_functionCall_in_synpred22_Reflex685);
		functionCall();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred22_Reflex687); if (state.failed) return;

		}

	}
	// $ANTLR end synpred22_Reflex

	// $ANTLR start synpred45_Reflex
	public final void synpred45_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:440:5: ( expression '<-->' Identifier '{' block '}' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:440:5: expression '<-->' Identifier '{' block '}'
		{
		pushFollow(FOLLOW_expression_in_synpred45_Reflex1216);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Patch,FOLLOW_Patch_in_synpred45_Reflex1218); if (state.failed) return;

		match(input,Identifier,FOLLOW_Identifier_in_synpred45_Reflex1220); if (state.failed) return;

		match(input,OBrace,FOLLOW_OBrace_in_synpred45_Reflex1222); if (state.failed) return;

		pushFollow(FOLLOW_block_in_synpred45_Reflex1224);
		block();
		state._fsp--;
		if (state.failed) return;

		match(input,CBrace,FOLLOW_CBrace_in_synpred45_Reflex1226); if (state.failed) return;

		}

	}
	// $ANTLR end synpred45_Reflex

	// $ANTLR start synpred71_Reflex
	public final void synpred71_Reflex_fragment() throws RecognitionException {
		ParserRuleReturnScope exp =null;


		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:486:6: ( Assert '(' exp= expression ')' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:486:6: Assert '(' exp= expression ')'
		{
		match(input,Assert,FOLLOW_Assert_in_synpred71_Reflex1962); if (state.failed) return;

		match(input,OParen,FOLLOW_OParen_in_synpred71_Reflex1964); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred71_Reflex1968);
		exp=expression();
		state._fsp--;
		if (state.failed) return;

		match(input,CParen,FOLLOW_CParen_in_synpred71_Reflex1970); if (state.failed) return;

		}

	}
	// $ANTLR end synpred71_Reflex

	// $ANTLR start synpred72_Reflex
	public final void synpred72_Reflex_fragment() throws RecognitionException {
		ParserRuleReturnScope msg =null;
		ParserRuleReturnScope exp =null;


		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:487:6: ( Assert '(' msg= expression ',' exp= expression ')' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:487:6: Assert '(' msg= expression ',' exp= expression ')'
		{
		match(input,Assert,FOLLOW_Assert_in_synpred72_Reflex1995); if (state.failed) return;

		match(input,OParen,FOLLOW_OParen_in_synpred72_Reflex1997); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred72_Reflex2001);
		msg=expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Comma,FOLLOW_Comma_in_synpred72_Reflex2003); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred72_Reflex2007);
		exp=expression();
		state._fsp--;
		if (state.failed) return;

		match(input,CParen,FOLLOW_CParen_in_synpred72_Reflex2009); if (state.failed) return;

		}

	}
	// $ANTLR end synpred72_Reflex

	// $ANTLR start synpred138_Reflex
	public final void synpred138_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:552:6: ( Defined '(' Identifier ')' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:552:6: Defined '(' Identifier ')'
		{
		match(input,Defined,FOLLOW_Defined_in_synpred138_Reflex4052); if (state.failed) return;

		match(input,OParen,FOLLOW_OParen_in_synpred138_Reflex4054); if (state.failed) return;

		match(input,Identifier,FOLLOW_Identifier_in_synpred138_Reflex4056); if (state.failed) return;

		match(input,CParen,FOLLOW_CParen_in_synpred138_Reflex4058); if (state.failed) return;

		}

	}
	// $ANTLR end synpred138_Reflex

	// $ANTLR start synpred139_Reflex
	public final void synpred139_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:553:6: ( Defined '(' lookup ')' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:553:6: Defined '(' lookup ')'
		{
		match(input,Defined,FOLLOW_Defined_in_synpred139_Reflex4078); if (state.failed) return;

		match(input,OParen,FOLLOW_OParen_in_synpred139_Reflex4080); if (state.failed) return;

		pushFollow(FOLLOW_lookup_in_synpred139_Reflex4082);
		lookup();
		state._fsp--;
		if (state.failed) return;

		match(input,CParen,FOLLOW_CParen_in_synpred139_Reflex4084); if (state.failed) return;

		}

	}
	// $ANTLR end synpred139_Reflex

	// $ANTLR start synpred176_Reflex
	public final void synpred176_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:13: ( elseIfStat )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:13: elseIfStat
		{
		pushFollow(FOLLOW_elseIfStat_in_synpred176_Reflex4986);
		elseIfStat();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred176_Reflex

	// $ANTLR start synpred177_Reflex
	public final void synpred177_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:25: ( elseStat )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:25: elseStat
		{
		pushFollow(FOLLOW_elseStat_in_synpred177_Reflex4989);
		elseStat();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred177_Reflex

	// $ANTLR start synpred178_Reflex
	public final void synpred178_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:35: ( End )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:613:35: End
		{
		match(input,End,FOLLOW_End_in_synpred178_Reflex4992); if (state.failed) return;

		}

	}
	// $ANTLR end synpred178_Reflex

	// $ANTLR start synpred179_Reflex
	public final void synpred179_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:617:6: ( If expression Do block )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:617:6: If expression Do block
		{
		match(input,If,FOLLOW_If_in_synpred179_Reflex5022); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred179_Reflex5024);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Do,FOLLOW_Do_in_synpred179_Reflex5026); if (state.failed) return;

		pushFollow(FOLLOW_block_in_synpred179_Reflex5028);
		block();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred179_Reflex

	// $ANTLR start synpred180_Reflex
	public final void synpred180_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:622:6: ( Else If expression Do block )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:622:6: Else If expression Do block
		{
		match(input,Else,FOLLOW_Else_in_synpred180_Reflex5080); if (state.failed) return;

		match(input,If,FOLLOW_If_in_synpred180_Reflex5082); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred180_Reflex5084);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Do,FOLLOW_Do_in_synpred180_Reflex5086); if (state.failed) return;

		pushFollow(FOLLOW_block_in_synpred180_Reflex5088);
		block();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred180_Reflex

	// $ANTLR start synpred183_Reflex
	public final void synpred183_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:37: ( '{' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:632:37: '{'
		{
		match(input,OBrace,FOLLOW_OBrace_in_synpred183_Reflex5201); if (state.failed) return;

		}

	}
	// $ANTLR end synpred183_Reflex

	// $ANTLR start synpred213_Reflex
	public final void synpred213_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:15: ( ( '+' | '-' ) mulExpr )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:15: ( '+' | '-' ) mulExpr
		{
		if ( input.LA(1)==Add||input.LA(1)==Subtract ) {
			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_mulExpr_in_synpred213_Reflex6067);
		mulExpr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred213_Reflex

	// $ANTLR start synpred232_Reflex
	public final void synpred232_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:19: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:19: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred232_Reflex6472);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred232_Reflex

	// $ANTLR start synpred233_Reflex
	public final void synpred233_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:6: ( functionCall ( indexes )? )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:6: functionCall ( indexes )?
		{
		pushFollow(FOLLOW_functionCall_in_synpred233_Reflex6470);
		functionCall();
		state._fsp--;
		if (state.failed) return;

		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:19: ( indexes )?
		int alt109=2;
		int LA109_0 = input.LA(1);
		if ( (LA109_0==OBracket) ) {
			alt109=1;
		}
		switch (alt109) {
			case 1 :
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:801:19: indexes
				{
				pushFollow(FOLLOW_indexes_in_synpred233_Reflex6472);
				indexes();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred233_Reflex

	// $ANTLR start synpred235_Reflex
	public final void synpred235_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:803:6: ( Identifier rangeindex )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:803:6: Identifier rangeindex
		{
		match(input,Identifier,FOLLOW_Identifier_in_synpred235_Reflex6522); if (state.failed) return;

		pushFollow(FOLLOW_rangeindex_in_synpred235_Reflex6524);
		rangeindex();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred235_Reflex

	// $ANTLR start synpred236_Reflex
	public final void synpred236_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:804:6: ( DottedIdentifier rangeindex )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:804:6: DottedIdentifier rangeindex
		{
		match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_synpred236_Reflex6548); if (state.failed) return;

		pushFollow(FOLLOW_rangeindex_in_synpred236_Reflex6550);
		rangeindex();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred236_Reflex

	// $ANTLR start synpred237_Reflex
	public final void synpred237_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:11: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:805:11: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred237_Reflex6570);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred237_Reflex

	// $ANTLR start synpred239_Reflex
	public final void synpred239_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:13: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:806:13: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred239_Reflex6606);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred239_Reflex

	// $ANTLR start synpred241_Reflex
	public final void synpred241_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:23: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:23: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred241_Reflex6640);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred241_Reflex

	// $ANTLR start synpred242_Reflex
	public final void synpred242_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:6: ( DottedIdentifier ( indexes )? )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:6: DottedIdentifier ( indexes )?
		{
		match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_synpred242_Reflex6638); if (state.failed) return;

		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:23: ( indexes )?
		int alt112=2;
		int LA112_0 = input.LA(1);
		if ( (LA112_0==OBracket) ) {
			alt112=1;
		}
		switch (alt112) {
			case 1 :
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:807:23: indexes
				{
				pushFollow(FOLLOW_indexes_in_synpred242_Reflex6640);
				indexes();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred242_Reflex

	// $ANTLR start synpred243_Reflex
	public final void synpred243_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:17: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:17: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred243_Reflex6664);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred243_Reflex

	// $ANTLR start synpred244_Reflex
	public final void synpred244_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:6: ( Identifier ( indexes )? )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:6: Identifier ( indexes )?
		{
		match(input,Identifier,FOLLOW_Identifier_in_synpred244_Reflex6662); if (state.failed) return;

		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:17: ( indexes )?
		int alt113=2;
		int LA113_0 = input.LA(1);
		if ( (LA113_0==OBracket) ) {
			alt113=1;
		}
		switch (alt113) {
			case 1 :
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:808:17: indexes
				{
				pushFollow(FOLLOW_indexes_in_synpred244_Reflex6664);
				indexes();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred244_Reflex

	// $ANTLR start synpred245_Reflex
	public final void synpred245_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:13: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:809:13: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred245_Reflex6694);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred245_Reflex

	// $ANTLR start synpred247_Reflex
	public final void synpred247_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:19: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:810:19: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred247_Reflex6728);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred247_Reflex

	// $ANTLR start synpred249_Reflex
	public final void synpred249_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:25: ( indexes )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:811:25: indexes
		{
		pushFollow(FOLLOW_indexes_in_synpred249_Reflex6760);
		indexes();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred249_Reflex

	// $ANTLR start synpred250_Reflex
	public final void synpred250_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:7: ( '[' exprList ']' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:815:7: '[' exprList ']'
		{
		match(input,OBracket,FOLLOW_OBracket_in_synpred250_Reflex6788); if (state.failed) return;

		pushFollow(FOLLOW_exprList_in_synpred250_Reflex6790);
		exprList();
		state._fsp--;
		if (state.failed) return;

		match(input,CBracket,FOLLOW_CBracket_in_synpred250_Reflex6792); if (state.failed) return;

		}

	}
	// $ANTLR end synpred250_Reflex

	// Delegated rules

	public final boolean synpred19_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred19_Reflex_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 synpred18_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred18_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred45_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred45_Reflex_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_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred71_Reflex_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 synpred17_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred17_Reflex_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 synpred232_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred232_Reflex_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 synpred233_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred233_Reflex_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 synpred235_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred235_Reflex_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 synpred250_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred250_Reflex_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 synpred14_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred14_Reflex_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 synpred15_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred15_Reflex_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_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred72_Reflex_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 synpred245_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred245_Reflex_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 synpred241_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred241_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred243_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred243_Reflex_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 synpred244_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred244_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred242_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred242_Reflex_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 synpred139_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred139_Reflex_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 synpred138_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred138_Reflex_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 synpred247_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred247_Reflex_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 synpred249_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred249_Reflex_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 synpred20_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred20_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred176_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred176_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred237_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred237_Reflex_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 synpred11_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred11_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred12_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred12_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred13_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred13_Reflex_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 synpred239_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred239_Reflex_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 synpred22_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred22_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred178_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred178_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred236_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred236_Reflex_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 synpred21_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred21_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred177_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred177_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred179_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred179_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred180_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred180_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred183_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred183_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred213_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred213_Reflex_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}


	protected DFA4 dfa4 = new DFA4(this);
	protected DFA6 dfa6 = new DFA6(this);
	protected DFA14 dfa14 = new DFA14(this);
	protected DFA34 dfa34 = new DFA34(this);
	protected DFA50 dfa50 = new DFA50(this);
	protected DFA66 dfa66 = new DFA66(this);
	protected DFA85 dfa85 = new DFA85(this);
	protected DFA77 dfa77 = new DFA77(this);
	protected DFA78 dfa78 = new DFA78(this);
	protected DFA79 dfa79 = new DFA79(this);
	protected DFA80 dfa80 = new DFA80(this);
	protected DFA81 dfa81 = new DFA81(this);
	protected DFA82 dfa82 = new DFA82(this);
	protected DFA83 dfa83 = new DFA83(this);
	protected DFA84 dfa84 = new DFA84(this);
	protected DFA86 dfa86 = new DFA86(this);
	static final String DFA4_eotS =
		"\174\uffff";
	static final String DFA4_eofS =
		"\1\1\173\uffff";
	static final String DFA4_minS =
		"\1\6\5\uffff\163\0\3\uffff";
	static final String DFA4_maxS =
		"\1\u00dc\5\uffff\163\0\3\uffff";
	static final String DFA4_acceptS =
		"\1\uffff\1\4\167\uffff\1\1\1\2\1\3";
	static final String DFA4_specialS =
		"\6\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\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\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\3\uffff}>";
	static final String[] DFA4_transitionS = {
			"\1\112\1\uffff\1\111\1\60\1\uffff\1\41\1\uffff\1\120\1\121\1\uffff\1"+
			"\122\1\46\1\47\2\uffff\1\17\1\153\1\uffff\1\1\4\uffff\1\136\1\35\1\uffff"+
			"\1\37\1\uffff\1\125\1\70\1\30\3\uffff\1\6\1\154\1\67\2\uffff\1\31\1\50"+
			"\1\167\1\uffff\1\133\1\57\1\63\3\uffff\1\10\1\uffff\1\114\4\uffff\2\1"+
			"\2\uffff\1\51\1\13\1\164\4\uffff\1\56\1\107\1\110\1\160\1\74\1\102\2"+
			"\uffff\1\140\1\141\1\100\1\34\1\33\1\36\11\uffff\1\7\1\157\1\11\2\uffff"+
			"\1\14\1\uffff\1\54\1\55\2\uffff\1\65\1\101\3\uffff\1\143\1\26\4\uffff"+
			"\1\135\1\15\2\uffff\1\105\3\uffff\1\106\1\155\1\130\1\75\1\73\1\76\1"+
			"\53\4\uffff\1\137\1\20\1\16\1\145\1\21\1\150\6\uffff\1\161\5\uffff\1"+
			"\22\1\uffff\1\61\1\151\1\uffff\1\24\1\23\1\144\2\uffff\1\77\2\uffff\1"+
			"\147\4\uffff\1\43\1\44\1\131\1\52\1\64\1\42\1\1\1\134\1\166\4\uffff\1"+
			"\126\1\uffff\1\25\1\127\1\27\1\uffff\1\132\1\116\1\115\1\146\1\170\1"+
			"\12\1\62\1\123\1\156\1\uffff\1\113\1\142\1\152\1\32\1\71\1\uffff\1\45"+
			"\1\163\1\40\1\uffff\1\66\1\165\1\104\1\103\1\uffff\1\117\1\72\1\124\1"+
			"\162",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\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[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
	static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
	static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
	static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
	static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
	static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
	static final short[][] DFA4_transition;

	static {
		int numStates = DFA4_transitionS.length;
		DFA4_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;

					case 1 : 
						int LA4_7 = input.LA(1);
						 
						int index4_7 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_7);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA4_8 = input.LA(1);
						 
						int index4_8 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_8);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA4_9 = input.LA(1);
						 
						int index4_9 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_9);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA4_10 = input.LA(1);
						 
						int index4_10 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_10);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA4_11 = input.LA(1);
						 
						int index4_11 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_11);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA4_12 = input.LA(1);
						 
						int index4_12 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_12);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA4_13 = input.LA(1);
						 
						int index4_13 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_13);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA4_14 = input.LA(1);
						 
						int index4_14 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_14);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA4_15 = input.LA(1);
						 
						int index4_15 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_15);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA4_16 = input.LA(1);
						 
						int index4_16 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_16);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA4_17 = input.LA(1);
						 
						int index4_17 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_17);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA4_18 = input.LA(1);
						 
						int index4_18 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_18);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA4_19 = input.LA(1);
						 
						int index4_19 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_19);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA4_20 = input.LA(1);
						 
						int index4_20 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_20);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA4_21 = input.LA(1);
						 
						int index4_21 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_21);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA4_22 = input.LA(1);
						 
						int index4_22 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_22);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA4_23 = input.LA(1);
						 
						int index4_23 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_23);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA4_24 = input.LA(1);
						 
						int index4_24 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_24);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA4_25 = input.LA(1);
						 
						int index4_25 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_25);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA4_26 = input.LA(1);
						 
						int index4_26 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_26);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA4_27 = input.LA(1);
						 
						int index4_27 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_27);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA4_28 = input.LA(1);
						 
						int index4_28 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_28);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA4_29 = input.LA(1);
						 
						int index4_29 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_29);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA4_30 = input.LA(1);
						 
						int index4_30 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_30);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA4_31 = input.LA(1);
						 
						int index4_31 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_31);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA4_32 = input.LA(1);
						 
						int index4_32 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_32);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA4_33 = input.LA(1);
						 
						int index4_33 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_33);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA4_34 = input.LA(1);
						 
						int index4_34 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_34);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA4_35 = input.LA(1);
						 
						int index4_35 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_35);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA4_36 = input.LA(1);
						 
						int index4_36 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_36);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA4_37 = input.LA(1);
						 
						int index4_37 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_37);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA4_38 = input.LA(1);
						 
						int index4_38 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_38);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA4_39 = input.LA(1);
						 
						int index4_39 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_39);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA4_40 = input.LA(1);
						 
						int index4_40 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_40);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA4_41 = input.LA(1);
						 
						int index4_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_41);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA4_42 = input.LA(1);
						 
						int index4_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_42);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA4_43 = input.LA(1);
						 
						int index4_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_43);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA4_44 = input.LA(1);
						 
						int index4_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_44);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA4_45 = input.LA(1);
						 
						int index4_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_45);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA4_46 = input.LA(1);
						 
						int index4_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_46);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA4_47 = input.LA(1);
						 
						int index4_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_47);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA4_48 = input.LA(1);
						 
						int index4_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_48);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA4_49 = input.LA(1);
						 
						int index4_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_49);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA4_50 = input.LA(1);
						 
						int index4_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_50);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA4_51 = input.LA(1);
						 
						int index4_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_51);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA4_52 = input.LA(1);
						 
						int index4_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_52);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA4_53 = input.LA(1);
						 
						int index4_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_53);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA4_54 = input.LA(1);
						 
						int index4_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_54);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA4_55 = input.LA(1);
						 
						int index4_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_55);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA4_56 = input.LA(1);
						 
						int index4_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_56);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA4_57 = input.LA(1);
						 
						int index4_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_57);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA4_58 = input.LA(1);
						 
						int index4_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_58);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA4_59 = input.LA(1);
						 
						int index4_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_59);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA4_60 = input.LA(1);
						 
						int index4_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_60);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA4_61 = input.LA(1);
						 
						int index4_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_61);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA4_62 = input.LA(1);
						 
						int index4_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_62);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA4_63 = input.LA(1);
						 
						int index4_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_63);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA4_64 = input.LA(1);
						 
						int index4_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_64);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA4_65 = input.LA(1);
						 
						int index4_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_65);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA4_66 = input.LA(1);
						 
						int index4_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_66);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA4_67 = input.LA(1);
						 
						int index4_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_67);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA4_68 = input.LA(1);
						 
						int index4_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_68);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA4_69 = input.LA(1);
						 
						int index4_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_69);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA4_70 = input.LA(1);
						 
						int index4_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_70);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA4_71 = input.LA(1);
						 
						int index4_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_71);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA4_72 = input.LA(1);
						 
						int index4_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_72);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA4_73 = input.LA(1);
						 
						int index4_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_73);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA4_74 = input.LA(1);
						 
						int index4_74 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_74);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA4_75 = input.LA(1);
						 
						int index4_75 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_75);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA4_76 = input.LA(1);
						 
						int index4_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_76);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA4_77 = input.LA(1);
						 
						int index4_77 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_77);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA4_78 = input.LA(1);
						 
						int index4_78 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_78);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA4_79 = input.LA(1);
						 
						int index4_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_79);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA4_80 = input.LA(1);
						 
						int index4_80 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_80);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA4_81 = input.LA(1);
						 
						int index4_81 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_81);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA4_82 = input.LA(1);
						 
						int index4_82 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_82);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA4_83 = input.LA(1);
						 
						int index4_83 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_83);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA4_84 = input.LA(1);
						 
						int index4_84 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_84);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA4_85 = input.LA(1);
						 
						int index4_85 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_85);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA4_86 = input.LA(1);
						 
						int index4_86 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_86);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA4_87 = input.LA(1);
						 
						int index4_87 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_87);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA4_88 = input.LA(1);
						 
						int index4_88 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_88);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA4_89 = input.LA(1);
						 
						int index4_89 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_89);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA4_90 = input.LA(1);
						 
						int index4_90 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_90);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA4_91 = input.LA(1);
						 
						int index4_91 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_91);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA4_92 = input.LA(1);
						 
						int index4_92 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_92);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA4_93 = input.LA(1);
						 
						int index4_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_93);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA4_94 = input.LA(1);
						 
						int index4_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_94);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA4_95 = input.LA(1);
						 
						int index4_95 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_95);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA4_96 = input.LA(1);
						 
						int index4_96 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_96);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA4_97 = input.LA(1);
						 
						int index4_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_97);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA4_98 = input.LA(1);
						 
						int index4_98 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_98);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA4_99 = input.LA(1);
						 
						int index4_99 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_99);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA4_100 = input.LA(1);
						 
						int index4_100 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_100);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA4_101 = input.LA(1);
						 
						int index4_101 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_101);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA4_102 = input.LA(1);
						 
						int index4_102 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_102);
						if ( s>=0 ) return s;
						break;

					case 97 : 
						int LA4_103 = input.LA(1);
						 
						int index4_103 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_103);
						if ( s>=0 ) return s;
						break;

					case 98 : 
						int LA4_104 = input.LA(1);
						 
						int index4_104 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_104);
						if ( s>=0 ) return s;
						break;

					case 99 : 
						int LA4_105 = input.LA(1);
						 
						int index4_105 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_105);
						if ( s>=0 ) return s;
						break;

					case 100 : 
						int LA4_106 = input.LA(1);
						 
						int index4_106 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_106);
						if ( s>=0 ) return s;
						break;

					case 101 : 
						int LA4_107 = input.LA(1);
						 
						int index4_107 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_107);
						if ( s>=0 ) return s;
						break;

					case 102 : 
						int LA4_108 = input.LA(1);
						 
						int index4_108 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_108);
						if ( s>=0 ) return s;
						break;

					case 103 : 
						int LA4_109 = input.LA(1);
						 
						int index4_109 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_109);
						if ( s>=0 ) return s;
						break;

					case 104 : 
						int LA4_110 = input.LA(1);
						 
						int index4_110 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_110);
						if ( s>=0 ) return s;
						break;

					case 105 : 
						int LA4_111 = input.LA(1);
						 
						int index4_111 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_111);
						if ( s>=0 ) return s;
						break;

					case 106 : 
						int LA4_112 = input.LA(1);
						 
						int index4_112 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_112);
						if ( s>=0 ) return s;
						break;

					case 107 : 
						int LA4_113 = input.LA(1);
						 
						int index4_113 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_113);
						if ( s>=0 ) return s;
						break;

					case 108 : 
						int LA4_114 = input.LA(1);
						 
						int index4_114 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_114);
						if ( s>=0 ) return s;
						break;

					case 109 : 
						int LA4_115 = input.LA(1);
						 
						int index4_115 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_115);
						if ( s>=0 ) return s;
						break;

					case 110 : 
						int LA4_116 = input.LA(1);
						 
						int index4_116 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_116);
						if ( s>=0 ) return s;
						break;

					case 111 : 
						int LA4_117 = input.LA(1);
						 
						int index4_117 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_117);
						if ( s>=0 ) return s;
						break;

					case 112 : 
						int LA4_118 = input.LA(1);
						 
						int index4_118 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred11_Reflex()) ) {s = 121;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_118);
						if ( s>=0 ) return s;
						break;

					case 113 : 
						int LA4_119 = input.LA(1);
						 
						int index4_119 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred12_Reflex()) ) {s = 122;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_119);
						if ( s>=0 ) return s;
						break;

					case 114 : 
						int LA4_120 = input.LA(1);
						 
						int index4_120 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred13_Reflex()) ) {s = 123;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_120);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 4, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA6_eotS =
		"\170\uffff";
	static final String DFA6_eofS =
		"\170\uffff";
	static final String DFA6_minS =
		"\1\6\1\uffff\2\0\1\uffff\137\0\24\uffff";
	static final String DFA6_maxS =
		"\1\u00dc\1\uffff\2\0\1\uffff\137\0\24\uffff";
	static final String DFA6_acceptS =
		"\1\uffff\1\1\2\uffff\1\2\137\uffff\1\3\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\4\1\5\1\6\1\7\1\10\1\26";
	static final String DFA6_specialS =
		"\2\uffff\1\0\1\1\1\uffff\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\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\1\132\1\133"+
		"\1\134\1\135\1\136\1\137\1\140\24\uffff}>";
	static final String[] DFA6_transitionS = {
			"\1\105\1\uffff\1\104\1\53\1\uffff\1\34\1\uffff\1\113\1\114\1\uffff\1"+
			"\115\1\41\1\42\2\uffff\1\12\1\146\6\uffff\1\131\1\30\1\uffff\1\32\1\uffff"+
			"\1\120\1\63\1\23\3\uffff\1\1\1\147\1\62\2\uffff\1\24\1\43\2\uffff\1\126"+
			"\1\52\1\56\3\uffff\1\3\1\uffff\1\107\10\uffff\1\44\1\6\1\157\4\uffff"+
			"\1\51\1\102\1\103\1\153\1\67\1\75\2\uffff\1\133\1\134\1\73\1\27\1\26"+
			"\1\31\11\uffff\1\2\1\152\1\4\2\uffff\1\7\1\uffff\1\47\1\50\2\uffff\1"+
			"\60\1\74\3\uffff\1\136\1\21\4\uffff\1\130\1\10\2\uffff\1\100\3\uffff"+
			"\1\101\1\150\1\123\1\70\1\66\1\71\1\46\4\uffff\1\132\1\13\1\11\1\140"+
			"\1\14\1\143\6\uffff\1\154\5\uffff\1\15\1\uffff\1\54\1\144\1\uffff\1\17"+
			"\1\16\1\137\2\uffff\1\72\2\uffff\1\142\4\uffff\1\36\1\37\1\124\1\45\1"+
			"\57\1\35\1\uffff\1\127\1\161\4\uffff\1\121\1\uffff\1\20\1\122\1\22\1"+
			"\uffff\1\125\1\111\1\110\1\141\1\uffff\1\5\1\55\1\116\1\151\1\uffff\1"+
			"\106\1\135\1\145\1\25\1\64\1\uffff\1\40\1\156\1\33\1\uffff\1\61\1\160"+
			"\1\77\1\76\1\uffff\1\112\1\65\1\117\1\155",
			"",
			"\1\uffff",
			"\1\uffff",
			"",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\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[] DFA6_eot = DFA.unpackEncodedString(DFA6_eotS);
	static final short[] DFA6_eof = DFA.unpackEncodedString(DFA6_eofS);
	static final char[] DFA6_min = DFA.unpackEncodedStringToUnsignedChars(DFA6_minS);
	static final char[] DFA6_max = DFA.unpackEncodedStringToUnsignedChars(DFA6_maxS);
	static final short[] DFA6_accept = DFA.unpackEncodedString(DFA6_acceptS);
	static final short[] DFA6_special = DFA.unpackEncodedString(DFA6_specialS);
	static final short[][] DFA6_transition;

	static {
		int numStates = DFA6_transitionS.length;
		DFA6_transition = new short[numStates][];
		for (int i=0; i assignment | importStatement ';' -> importStatement | port ';' -> port | pull ';' -> pull | metapull ';' -> metapull | push ';' -> push | patchStatement | functionCall ';' -> functionCall | throwStatement ';' -> throwStatement | breakStatement ';' -> breakStatement | continueStatement ';' -> continueStatement | matchStatement | switchStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement | exportStatement | Unsupported | SColon | Identifier );";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA6_2 = input.LA(1);
						 
						int index6_2 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred15_Reflex()) ) {s = 1;}
						else if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred18_Reflex()) ) {s = 114;}
						else if ( (synpred19_Reflex()) ) {s = 115;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						else if ( (true) ) {s = 119;}
						 
						input.seek(index6_2);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA6_3 = input.LA(1);
						 
						int index6_3 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred15_Reflex()) ) {s = 1;}
						else if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_3);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA6_5 = input.LA(1);
						 
						int index6_5 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_5);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA6_6 = input.LA(1);
						 
						int index6_6 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_6);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA6_7 = input.LA(1);
						 
						int index6_7 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_7);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA6_8 = input.LA(1);
						 
						int index6_8 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_8);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA6_9 = input.LA(1);
						 
						int index6_9 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_9);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA6_10 = input.LA(1);
						 
						int index6_10 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_10);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA6_11 = input.LA(1);
						 
						int index6_11 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_11);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA6_12 = input.LA(1);
						 
						int index6_12 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_12);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA6_13 = input.LA(1);
						 
						int index6_13 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_13);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA6_14 = input.LA(1);
						 
						int index6_14 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_14);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA6_15 = input.LA(1);
						 
						int index6_15 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_15);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA6_16 = input.LA(1);
						 
						int index6_16 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_16);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA6_17 = input.LA(1);
						 
						int index6_17 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_17);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA6_18 = input.LA(1);
						 
						int index6_18 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_18);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA6_19 = input.LA(1);
						 
						int index6_19 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_19);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA6_20 = input.LA(1);
						 
						int index6_20 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_20);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA6_21 = input.LA(1);
						 
						int index6_21 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_21);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA6_22 = input.LA(1);
						 
						int index6_22 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_22);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA6_23 = input.LA(1);
						 
						int index6_23 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_23);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA6_24 = input.LA(1);
						 
						int index6_24 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_24);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA6_25 = input.LA(1);
						 
						int index6_25 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_25);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA6_26 = input.LA(1);
						 
						int index6_26 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_26);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA6_27 = input.LA(1);
						 
						int index6_27 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_27);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA6_28 = input.LA(1);
						 
						int index6_28 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_28);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA6_29 = input.LA(1);
						 
						int index6_29 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_29);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA6_30 = input.LA(1);
						 
						int index6_30 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_30);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA6_31 = input.LA(1);
						 
						int index6_31 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_31);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA6_32 = input.LA(1);
						 
						int index6_32 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_32);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA6_33 = input.LA(1);
						 
						int index6_33 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_33);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA6_34 = input.LA(1);
						 
						int index6_34 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_34);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA6_35 = input.LA(1);
						 
						int index6_35 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_35);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA6_36 = input.LA(1);
						 
						int index6_36 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_36);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA6_37 = input.LA(1);
						 
						int index6_37 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_37);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA6_38 = input.LA(1);
						 
						int index6_38 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_38);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA6_39 = input.LA(1);
						 
						int index6_39 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_39);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA6_40 = input.LA(1);
						 
						int index6_40 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_40);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA6_41 = input.LA(1);
						 
						int index6_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_41);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA6_42 = input.LA(1);
						 
						int index6_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_42);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA6_43 = input.LA(1);
						 
						int index6_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_43);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA6_44 = input.LA(1);
						 
						int index6_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_44);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA6_45 = input.LA(1);
						 
						int index6_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_45);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA6_46 = input.LA(1);
						 
						int index6_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_46);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA6_47 = input.LA(1);
						 
						int index6_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_47);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA6_48 = input.LA(1);
						 
						int index6_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_48);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA6_49 = input.LA(1);
						 
						int index6_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_49);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA6_50 = input.LA(1);
						 
						int index6_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_50);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA6_51 = input.LA(1);
						 
						int index6_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_51);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA6_52 = input.LA(1);
						 
						int index6_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_52);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA6_53 = input.LA(1);
						 
						int index6_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_53);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA6_54 = input.LA(1);
						 
						int index6_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_54);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA6_55 = input.LA(1);
						 
						int index6_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_55);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA6_56 = input.LA(1);
						 
						int index6_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_56);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA6_57 = input.LA(1);
						 
						int index6_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_57);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA6_58 = input.LA(1);
						 
						int index6_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_58);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA6_59 = input.LA(1);
						 
						int index6_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_59);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA6_60 = input.LA(1);
						 
						int index6_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_60);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA6_61 = input.LA(1);
						 
						int index6_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_61);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA6_62 = input.LA(1);
						 
						int index6_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_62);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA6_63 = input.LA(1);
						 
						int index6_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_63);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA6_64 = input.LA(1);
						 
						int index6_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_64);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA6_65 = input.LA(1);
						 
						int index6_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_65);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA6_66 = input.LA(1);
						 
						int index6_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_66);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA6_67 = input.LA(1);
						 
						int index6_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_67);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA6_68 = input.LA(1);
						 
						int index6_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_68);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA6_69 = input.LA(1);
						 
						int index6_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_69);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA6_70 = input.LA(1);
						 
						int index6_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_70);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA6_71 = input.LA(1);
						 
						int index6_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_71);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA6_72 = input.LA(1);
						 
						int index6_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_72);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA6_73 = input.LA(1);
						 
						int index6_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_73);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA6_74 = input.LA(1);
						 
						int index6_74 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_74);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA6_75 = input.LA(1);
						 
						int index6_75 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_75);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA6_76 = input.LA(1);
						 
						int index6_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_76);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA6_77 = input.LA(1);
						 
						int index6_77 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_77);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA6_78 = input.LA(1);
						 
						int index6_78 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_78);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA6_79 = input.LA(1);
						 
						int index6_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_79);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA6_80 = input.LA(1);
						 
						int index6_80 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_80);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA6_81 = input.LA(1);
						 
						int index6_81 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_81);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA6_82 = input.LA(1);
						 
						int index6_82 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_82);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA6_83 = input.LA(1);
						 
						int index6_83 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_83);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA6_84 = input.LA(1);
						 
						int index6_84 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_84);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA6_85 = input.LA(1);
						 
						int index6_85 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_85);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA6_86 = input.LA(1);
						 
						int index6_86 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_86);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA6_87 = input.LA(1);
						 
						int index6_87 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_87);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA6_88 = input.LA(1);
						 
						int index6_88 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_88);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA6_89 = input.LA(1);
						 
						int index6_89 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_89);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA6_90 = input.LA(1);
						 
						int index6_90 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_90);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA6_91 = input.LA(1);
						 
						int index6_91 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_91);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA6_92 = input.LA(1);
						 
						int index6_92 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_92);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA6_93 = input.LA(1);
						 
						int index6_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_93);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA6_94 = input.LA(1);
						 
						int index6_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						else if ( (synpred22_Reflex()) ) {s = 118;}
						 
						input.seek(index6_94);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA6_95 = input.LA(1);
						 
						int index6_95 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_95);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA6_96 = input.LA(1);
						 
						int index6_96 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_96);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA6_97 = input.LA(1);
						 
						int index6_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_97);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA6_98 = input.LA(1);
						 
						int index6_98 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_98);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA6_99 = input.LA(1);
						 
						int index6_99 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred17_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 116;}
						else if ( (synpred21_Reflex()) ) {s = 117;}
						 
						input.seek(index6_99);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 6, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA14_eotS =
		"\144\uffff";
	static final String DFA14_eofS =
		"\144\uffff";
	static final String DFA14_minS =
		"\1\6\141\0\2\uffff";
	static final String DFA14_maxS =
		"\1\u00db\141\0\2\uffff";
	static final String DFA14_acceptS =
		"\142\uffff\1\1\1\2";
	static final String DFA14_specialS =
		"\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
		"\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\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\1\130\1\131\1\132\1\133\1\134"+
		"\1\135\1\136\1\137\1\140\2\uffff}>";
	static final String[] DFA14_transitionS = {
			"\1\103\1\uffff\1\102\1\51\1\uffff\1\32\1\uffff\1\111\1\112\1\uffff\1"+
			"\113\1\37\1\40\2\uffff\1\6\7\uffff\1\127\1\24\1\uffff\1\26\1\uffff\1"+
			"\116\1\61\1\17\5\uffff\1\60\2\uffff\1\20\1\41\2\uffff\1\124\1\50\1\54"+
			"\3\uffff\1\30\1\uffff\1\105\10\uffff\1\42\1\2\5\uffff\1\47\1\100\1\101"+
			"\1\uffff\1\65\1\73\2\uffff\1\131\1\132\1\71\1\23\1\22\1\25\11\uffff\1"+
			"\27\4\uffff\1\3\1\uffff\1\45\1\46\2\uffff\1\56\1\72\3\uffff\1\134\1\15"+
			"\4\uffff\1\126\1\4\2\uffff\1\76\3\uffff\1\77\1\uffff\1\121\1\66\1\64"+
			"\1\67\1\44\4\uffff\1\130\1\7\1\5\1\136\1\10\1\141\14\uffff\1\11\1\uffff"+
			"\1\52\2\uffff\1\13\1\12\1\135\2\uffff\1\70\2\uffff\1\140\4\uffff\1\34"+
			"\1\35\1\122\1\43\1\55\1\33\1\uffff\1\125\5\uffff\1\117\1\uffff\1\14\1"+
			"\120\1\16\1\uffff\1\123\1\107\1\106\1\137\1\uffff\1\1\1\53\1\114\2\uffff"+
			"\1\104\1\133\1\uffff\1\21\1\62\1\uffff\1\36\1\uffff\1\31\1\uffff\1\57"+
			"\1\uffff\1\75\1\74\1\uffff\1\110\1\63\1\115",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\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[] DFA14_eot = DFA.unpackEncodedString(DFA14_eotS);
	static final short[] DFA14_eof = DFA.unpackEncodedString(DFA14_eofS);
	static final char[] DFA14_min = DFA.unpackEncodedStringToUnsignedChars(DFA14_minS);
	static final char[] DFA14_max = DFA.unpackEncodedStringToUnsignedChars(DFA14_maxS);
	static final short[] DFA14_accept = DFA.unpackEncodedString(DFA14_acceptS);
	static final short[] DFA14_special = DFA.unpackEncodedString(DFA14_specialS);
	static final short[][] DFA14_transition;

	static {
		int numStates = DFA14_transitionS.length;
		DFA14_transition = new short[numStates][];
		for (int i=0; i' Identifier '{' block '}' -> ^( PATCH[$Identifier] expression Identifier block ) | expression '<-->' Identifier Do block End -> ^( PATCH[$Identifier] expression Identifier block ) );";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA14_1 = input.LA(1);
						 
						int index14_1 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_1);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA14_2 = input.LA(1);
						 
						int index14_2 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_2);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA14_3 = input.LA(1);
						 
						int index14_3 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_3);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA14_4 = input.LA(1);
						 
						int index14_4 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_4);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA14_5 = input.LA(1);
						 
						int index14_5 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_5);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA14_6 = input.LA(1);
						 
						int index14_6 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_6);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA14_7 = input.LA(1);
						 
						int index14_7 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_7);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA14_8 = input.LA(1);
						 
						int index14_8 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_8);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA14_9 = input.LA(1);
						 
						int index14_9 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_9);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA14_10 = input.LA(1);
						 
						int index14_10 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_10);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA14_11 = input.LA(1);
						 
						int index14_11 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_11);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA14_12 = input.LA(1);
						 
						int index14_12 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_12);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA14_13 = input.LA(1);
						 
						int index14_13 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_13);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA14_14 = input.LA(1);
						 
						int index14_14 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_14);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA14_15 = input.LA(1);
						 
						int index14_15 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_15);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA14_16 = input.LA(1);
						 
						int index14_16 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_16);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA14_17 = input.LA(1);
						 
						int index14_17 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_17);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA14_18 = input.LA(1);
						 
						int index14_18 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_18);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA14_19 = input.LA(1);
						 
						int index14_19 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_19);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA14_20 = input.LA(1);
						 
						int index14_20 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_20);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA14_21 = input.LA(1);
						 
						int index14_21 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_21);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA14_22 = input.LA(1);
						 
						int index14_22 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_22);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA14_23 = input.LA(1);
						 
						int index14_23 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_23);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA14_24 = input.LA(1);
						 
						int index14_24 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_24);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA14_25 = input.LA(1);
						 
						int index14_25 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_25);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA14_26 = input.LA(1);
						 
						int index14_26 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_26);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA14_27 = input.LA(1);
						 
						int index14_27 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_27);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA14_28 = input.LA(1);
						 
						int index14_28 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_28);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA14_29 = input.LA(1);
						 
						int index14_29 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_29);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA14_30 = input.LA(1);
						 
						int index14_30 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_30);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA14_31 = input.LA(1);
						 
						int index14_31 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_31);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA14_32 = input.LA(1);
						 
						int index14_32 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_32);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA14_33 = input.LA(1);
						 
						int index14_33 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_33);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA14_34 = input.LA(1);
						 
						int index14_34 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_34);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA14_35 = input.LA(1);
						 
						int index14_35 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_35);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA14_36 = input.LA(1);
						 
						int index14_36 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_36);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA14_37 = input.LA(1);
						 
						int index14_37 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_37);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA14_38 = input.LA(1);
						 
						int index14_38 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_38);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA14_39 = input.LA(1);
						 
						int index14_39 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_39);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA14_40 = input.LA(1);
						 
						int index14_40 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_40);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA14_41 = input.LA(1);
						 
						int index14_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_41);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA14_42 = input.LA(1);
						 
						int index14_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_42);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA14_43 = input.LA(1);
						 
						int index14_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_43);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA14_44 = input.LA(1);
						 
						int index14_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_44);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA14_45 = input.LA(1);
						 
						int index14_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_45);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA14_46 = input.LA(1);
						 
						int index14_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_46);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA14_47 = input.LA(1);
						 
						int index14_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_47);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA14_48 = input.LA(1);
						 
						int index14_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_48);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA14_49 = input.LA(1);
						 
						int index14_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_49);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA14_50 = input.LA(1);
						 
						int index14_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_50);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA14_51 = input.LA(1);
						 
						int index14_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_51);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA14_52 = input.LA(1);
						 
						int index14_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_52);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA14_53 = input.LA(1);
						 
						int index14_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_53);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA14_54 = input.LA(1);
						 
						int index14_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_54);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA14_55 = input.LA(1);
						 
						int index14_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_55);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA14_56 = input.LA(1);
						 
						int index14_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_56);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA14_57 = input.LA(1);
						 
						int index14_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_57);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA14_58 = input.LA(1);
						 
						int index14_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_58);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA14_59 = input.LA(1);
						 
						int index14_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_59);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA14_60 = input.LA(1);
						 
						int index14_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_60);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA14_61 = input.LA(1);
						 
						int index14_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_61);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA14_62 = input.LA(1);
						 
						int index14_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_62);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA14_63 = input.LA(1);
						 
						int index14_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_63);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA14_64 = input.LA(1);
						 
						int index14_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_64);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA14_65 = input.LA(1);
						 
						int index14_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_65);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA14_66 = input.LA(1);
						 
						int index14_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_66);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA14_67 = input.LA(1);
						 
						int index14_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_67);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA14_68 = input.LA(1);
						 
						int index14_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_68);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA14_69 = input.LA(1);
						 
						int index14_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_69);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA14_70 = input.LA(1);
						 
						int index14_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_70);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA14_71 = input.LA(1);
						 
						int index14_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_71);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA14_72 = input.LA(1);
						 
						int index14_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_72);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA14_73 = input.LA(1);
						 
						int index14_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_73);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA14_74 = input.LA(1);
						 
						int index14_74 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_74);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA14_75 = input.LA(1);
						 
						int index14_75 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_75);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA14_76 = input.LA(1);
						 
						int index14_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_76);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA14_77 = input.LA(1);
						 
						int index14_77 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_77);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA14_78 = input.LA(1);
						 
						int index14_78 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_78);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA14_79 = input.LA(1);
						 
						int index14_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_79);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA14_80 = input.LA(1);
						 
						int index14_80 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_80);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA14_81 = input.LA(1);
						 
						int index14_81 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_81);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA14_82 = input.LA(1);
						 
						int index14_82 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_82);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA14_83 = input.LA(1);
						 
						int index14_83 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_83);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA14_84 = input.LA(1);
						 
						int index14_84 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_84);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA14_85 = input.LA(1);
						 
						int index14_85 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_85);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA14_86 = input.LA(1);
						 
						int index14_86 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_86);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA14_87 = input.LA(1);
						 
						int index14_87 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_87);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA14_88 = input.LA(1);
						 
						int index14_88 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_88);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA14_89 = input.LA(1);
						 
						int index14_89 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_89);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA14_90 = input.LA(1);
						 
						int index14_90 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_90);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA14_91 = input.LA(1);
						 
						int index14_91 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_91);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA14_92 = input.LA(1);
						 
						int index14_92 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_92);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA14_93 = input.LA(1);
						 
						int index14_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_93);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA14_94 = input.LA(1);
						 
						int index14_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_94);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA14_95 = input.LA(1);
						 
						int index14_95 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_95);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA14_96 = input.LA(1);
						 
						int index14_96 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_96);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA14_97 = input.LA(1);
						 
						int index14_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred45_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index14_97);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 14, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA34_eotS =
		"\111\uffff";
	static final String DFA34_eofS =
		"\111\uffff";
	static final String DFA34_minS =
		"\1\6\1\uffff\1\0\71\uffff\1\0\14\uffff";
	static final String DFA34_maxS =
		"\1\u00db\1\uffff\1\0\71\uffff\1\0\14\uffff";
	static final String DFA34_acceptS =
		"\1\uffff\1\1\1\uffff\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\uffff\1\77\1\100\1\101\1\102\1\103\1\104\1\105"+
		"\1\106\1\2\1\3\1\75\1\76";
	static final String DFA34_specialS =
		"\2\uffff\1\0\71\uffff\1\1\14\uffff}>";
	static final String[] DFA34_transitionS = {
			"\1\53\1\uffff\1\52\1\21\1\uffff\1\2\1\uffff\1\61\1\62\1\uffff\1\63\1"+
			"\7\1\10\12\uffff\1\77\4\uffff\1\66\1\31\6\uffff\1\30\3\uffff\1\11\2\uffff"+
			"\1\74\1\20\1\24\5\uffff\1\55\10\uffff\1\12\6\uffff\1\17\1\50\1\51\1\uffff"+
			"\1\35\1\43\2\uffff\1\101\1\102\1\41\23\uffff\1\15\1\16\2\uffff\1\26\1"+
			"\42\3\uffff\1\104\5\uffff\1\76\3\uffff\1\46\3\uffff\1\47\1\uffff\1\71"+
			"\1\36\1\34\1\37\1\14\4\uffff\1\100\23\uffff\1\22\7\uffff\1\40\7\uffff"+
			"\1\4\1\5\1\72\1\13\1\25\1\3\1\uffff\1\75\5\uffff\1\67\2\uffff\1\70\2"+
			"\uffff\1\73\1\57\1\56\3\uffff\1\23\1\64\2\uffff\1\54\1\103\2\uffff\1"+
			"\32\1\uffff\1\6\1\uffff\1\1\1\uffff\1\27\1\uffff\1\45\1\44\1\uffff\1"+
			"\60\1\33\1\65",
			"",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA34_eot = DFA.unpackEncodedString(DFA34_eotS);
	static final short[] DFA34_eof = DFA.unpackEncodedString(DFA34_eofS);
	static final char[] DFA34_min = DFA.unpackEncodedStringToUnsignedChars(DFA34_minS);
	static final char[] DFA34_max = DFA.unpackEncodedStringToUnsignedChars(DFA34_maxS);
	static final short[] DFA34_accept = DFA.unpackEncodedString(DFA34_acceptS);
	static final short[] DFA34_special = DFA.unpackEncodedString(DFA34_specialS);
	static final short[][] DFA34_transition;

	static {
		int numStates = DFA34_transitionS.length;
		DFA34_transition = new short[numStates][];
		for (int i=0; i ^( FUNC_CALL[$TypeOf] TypeOf expression ) | Assert '(' exp= expression ')' -> ^( FUNC_CALL[$Assert] Assert $exp $exp) | Assert '(' msg= expression ',' exp= expression ')' -> ^( FUNC_CALL[$Assert] Assert $msg $exp) | Replace '(' v= expression ',' s= expression ',' t= expression ')' -> ^( FUNC_CALL[$Replace] Replace $v $s $t) | RPull '(' u= expression ')' -> ^( FUNC_CALL[$RPull] RPull $u) | RPush '(' u= expression ',' v= expression ( ',' o= expression )? ')' -> ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? ) | Transpose '(' expression ')' -> ^( FUNC_CALL[$Transpose] Transpose expression ) | B64Compress '(' expression ')' -> ^( FUNC_CALL[$B64Compress] B64Compress expression ) | B64Decompress '(' expression ')' -> ^( FUNC_CALL[$B64Decompress] B64Decompress expression ) | Debug '(' expression ')' -> ^( FUNC_CALL[$Debug] Debug expression ) | Evals '(' expression ')' -> ^( FUNC_CALL[$Evals] Evals expression ) | ReadDir '(' expression ')' -> ^( FUNC_CALL[$ReadDir] ReadDir expression ) | MkDir '(' expression ')' -> ^( FUNC_CALL[$MkDir] MkDir expression ) | IsFile '(' expression ')' -> ^( FUNC_CALL[$IsFile] IsFile expression ) | IsFolder '(' expression ')' -> ^( FUNC_CALL[$IsFolder] IsFolder expression ) | File '(' exprList ')' -> ^( FUNC_CALL[$File] File exprList ) | Delete '(' expression ')' -> ^( FUNC_CALL[$Delete] Delete expression ) | Archive '(' expression ')' -> ^( FUNC_CALL[$Archive] Archive expression ) | Port '(' expression ')' -> ^( FUNC_CALL[$Port] Port expression ) | Suspend '(' expression ')' -> ^( FUNC_CALL[$Suspend] Suspend expression ) | Difference '(' exprList ')' -> ^( FUNC_CALL[$Difference] Difference exprList ) | Remove '(' Identifier ',' k= expression ')' -> ^( FUNC_CALL[$Remove] Remove Identifier $k) | Join '(' exprList ')' -> ^( FUNC_CALL[$Join] Join exprList ) | Unique '(' exprList ')' -> ^( FUNC_CALL[$Unique] Unique exprList ) | Copy '(' s= expression ',' t= expression ')' -> ^( FUNC_CALL[$Copy] Copy $s $t) | Close '(' expression ')' -> ^( FUNC_CALL[$Close] Close expression ) | Timer '(' ( expression )? ')' -> ^( FUNC_CALL[$Timer] Timer ( expression )? ) | Vars '(' ')' -> ^( FUNC_CALL[$Vars] Vars ) | MergeIf '(' exprList ')' -> ^( FUNC_CALL[$MergeIf] MergeIf exprList ) | Format '(' exprList ')' -> ^( FUNC_CALL[$Format] Format exprList ) | Merge '(' exprList ')' -> ^( FUNC_CALL[$Merge] Merge exprList ) | Message '(' a= expression ',' m= expression ')' -> ^( FUNC_CALL[$Message] Message $a $m) | PutCache '(' v= expression ',' n= expression ( ',' exp= expression )? ')' -> ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? ) | GetCache '(' n= expression ')' -> ^( FUNC_CALL[$GetCache] GetCache $n) | Json '(' expression ')' -> ^( FUNC_CALL[$Json] Json expression ) | FromJson '(' expression ')' -> ^( FUNC_CALL[$FromJson] FromJson expression ) | UrlEncode '(' expression ')' -> ^( FUNC_CALL[$UrlEncode] UrlEncode expression ) | UrlDecode '(' expression ')' -> ^( FUNC_CALL[$UrlDecode] UrlDecode expression ) | MD5 '(' expression ')' -> ^( FUNC_CALL[$MD5] MD5 expression ) | MapFn '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$MapFn] MapFn Identifier expression ) | FilterFn '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression ) | Fold '(' Identifier ',' expression ',' expression ')' -> ^( FUNC_CALL[$Fold] Fold Identifier expression expression ) | Any '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$Any] Any Identifier expression ) | All '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$All] All Identifier expression ) | TakeWhile '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression ) | DropWhile '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression ) | SplitWith '(' Identifier ',' expression ')' -> ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression ) | Split '(' str= expression ',' sep= expression ',' quoter= expression ')' -> ^( FUNC_CALL[$Split] Split $str $sep $quoter) | Uuid '(' ')' -> ^( FUNC_CALL[$Uuid] Uuid ) | AsyncCall '(' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? ) | AsyncCallScript '(' r= expression ',' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? ) | AsyncStatus '(' expression ')' -> ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression ) | SuspendWait '(' exprList ')' -> ^( FUNC_CALL[$SuspendWait] SuspendWait exprList ) | Wait '(' d= expression ( ',' in= expression ',' re= expression )? ')' -> ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? ) | Chain '(' s= expression ( ',' p= expression )? ')' -> ^( FUNC_CALL[$Chain] Chain $s ( $p)? ) | Signal '(' d= expression ',' v= expression ')' -> ^( FUNC_CALL[$Signal] Signal $d $v) | Sleep '(' expression ')' -> ^( FUNC_CALL[$Sleep] Sleep expression ) | Matches '(' s= expression ',' r= expression ')' -> ^( FUNC_CALL[$Matches] Matches $s $r) | Rand '(' expression ')' -> ^( FUNC_CALL[$Rand] Rand expression ) | Spawn '(' p= expression ( ',' ex= expression ',' f= expression )? ')' -> ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? ) | Defined '(' Identifier ')' -> ^( FUNC_CALL[$Defined] Defined Identifier ) | Defined '(' lookup ')' -> ^( FUNC_CALL[$Defined] Defined lookup ) | Round '(' v= expression ( ',' dp= expression )? ')' -> ^( FUNC_CALL[$Round] Round $v ( $dp)? ) | Lib '(' expression ')' -> ^( FUNC_CALL[$Lib] Lib expression ) | Call '(' a= expression ',' b= expression ',' c= expression ')' -> ^( FUNC_CALL[$Call] Call $a $b $c) | New '(' a= expression ')' -> ^( FUNC_CALL[$New] New $a) | GenSchema '(' a= expression ')' -> ^( FUNC_CALL[$GenSchema] GenSchema $a) | GenStruct '(' Identifier ',' b= expression ')' -> ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b) | Template '(' t= expression ',' p= expression ')' -> ^( FUNC_CALL[$Template] Template $t $p) | KernelIdentifier '(' ( exprList )? ')' -> ^( KernelIdentifier ( exprList )? ) );";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA34_2 = input.LA(1);
						 
						int index34_2 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred71_Reflex()) ) {s = 69;}
						else if ( (synpred72_Reflex()) ) {s = 70;}
						 
						input.seek(index34_2);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA34_60 = input.LA(1);
						 
						int index34_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred138_Reflex()) ) {s = 71;}
						else if ( (synpred139_Reflex()) ) {s = 72;}
						 
						input.seek(index34_60);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 34, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA50_eotS =
		"\167\uffff";
	static final String DFA50_eofS =
		"\167\uffff";
	static final String DFA50_minS =
		"\1\6\1\0\165\uffff";
	static final String DFA50_maxS =
		"\1\u00dc\1\0\165\uffff";
	static final String DFA50_acceptS =
		"\2\uffff\1\2\163\uffff\1\1";
	static final String DFA50_specialS =
		"\1\uffff\1\0\165\uffff}>";
	static final String[] DFA50_transitionS = {
			"\1\2\1\uffff\2\2\1\uffff\1\2\1\uffff\2\2\1\uffff\3\2\2\uffff\2\2\1\uffff"+
			"\1\2\4\uffff\2\2\1\uffff\1\2\1\uffff\3\2\3\uffff\3\2\2\uffff\3\2\1\uffff"+
			"\3\2\3\uffff\1\2\1\uffff\1\2\5\uffff\1\2\2\uffff\3\2\4\uffff\6\2\2\uffff"+
			"\6\2\11\uffff\3\2\2\uffff\1\2\1\uffff\2\2\2\uffff\2\2\3\uffff\2\2\4\uffff"+
			"\2\2\2\uffff\1\2\3\uffff\7\2\4\uffff\3\2\1\1\2\2\6\uffff\1\2\5\uffff"+
			"\1\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\1\2\4\uffff\11\2\4\uffff"+
			"\1\2\1\uffff\3\2\1\uffff\11\2\1\uffff\5\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\4\2",
			"\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=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 DFA66_eotS =
		"\172\uffff";
	static final String DFA66_eofS =
		"\1\1\171\uffff";
	static final String DFA66_minS =
		"\1\5\22\uffff\1\0\146\uffff";
	static final String DFA66_maxS =
		"\1\u00df\22\uffff\1\0\146\uffff";
	static final String DFA66_acceptS =
		"\1\uffff\1\2\167\uffff\1\1";
	static final String DFA66_specialS =
		"\23\uffff\1\0\146\uffff}>";
	static final String[] DFA66_transitionS = {
			"\1\171\6\1\1\uffff\2\1\1\uffff\3\1\2\uffff\1\1\2\uffff\2\1\2\uffff\5"+
			"\1\1\uffff\5\1\3\uffff\1\1\2\uffff\2\1\1\uffff\4\1\2\uffff\2\1\1\uffff"+
			"\1\1\7\uffff\3\1\5\uffff\3\1\1\uffff\12\1\11\uffff\1\1\2\uffff\1\1\1"+
			"\uffff\4\1\2\uffff\2\1\3\uffff\2\1\2\uffff\4\1\2\uffff\1\1\3\uffff\1"+
			"\1\1\uffff\5\1\3\uffff\7\1\1\uffff\1\1\12\uffff\4\1\1\uffff\3\1\1\uffff"+
			"\3\1\1\uffff\1\1\4\uffff\6\1\1\uffff\2\1\4\uffff\1\1\1\uffff\3\1\1\uffff"+
			"\4\1\1\uffff\1\23\2\1\2\uffff\2\1\1\uffff\4\1\1\uffff\1\1\1\uffff\1\1"+
			"\1\uffff\2\1\1\uffff\3\1\3\uffff\1\1",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA66_eot = DFA.unpackEncodedString(DFA66_eotS);
	static final short[] DFA66_eof = DFA.unpackEncodedString(DFA66_eofS);
	static final char[] DFA66_min = DFA.unpackEncodedStringToUnsignedChars(DFA66_minS);
	static final char[] DFA66_max = DFA.unpackEncodedStringToUnsignedChars(DFA66_maxS);
	static final short[] DFA66_accept = DFA.unpackEncodedString(DFA66_acceptS);
	static final short[] DFA66_special = DFA.unpackEncodedString(DFA66_specialS);
	static final short[][] DFA66_transition;

	static {
		int numStates = DFA66_transitionS.length;
		DFA66_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 66, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA85_eotS =
		"\137\uffff";
	static final String DFA85_eofS =
		"\137\uffff";
	static final String DFA85_minS =
		"\1\6\16\uffff\2\0\116\uffff";
	static final String DFA85_maxS =
		"\1\u00db\16\uffff\2\0\116\uffff";
	static final String DFA85_acceptS =
		"\1\uffff\1\1\123\uffff\1\2\1\5\1\6\1\11\1\12\1\13\1\3\1\10\1\4\1\7";
	static final String DFA85_specialS =
		"\17\uffff\1\0\1\1\116\uffff}>";
	static final String[] DFA85_transitionS = {
			"\1\1\1\uffff\2\1\1\uffff\1\1\1\uffff\2\1\1\uffff\3\1\12\uffff\2\1\1\uffff"+
			"\1\1\1\uffff\3\1\5\uffff\1\1\2\uffff\2\1\2\uffff\3\1\3\uffff\1\20\1\uffff"+
			"\1\1\10\uffff\1\1\6\uffff\3\1\1\uffff\2\1\2\uffff\6\1\11\uffff\1\17\6"+
			"\uffff\2\1\2\uffff\2\1\3\uffff\2\1\4\uffff\1\1\3\uffff\1\1\3\uffff\1"+
			"\1\1\uffff\5\1\4\uffff\1\1\2\uffff\1\127\1\126\1\132\14\uffff\1\1\1\uffff"+
			"\1\1\2\uffff\2\1\1\125\2\uffff\1\1\2\uffff\1\131\4\uffff\6\1\1\uffff"+
			"\1\1\5\uffff\1\1\1\uffff\3\1\1\uffff\3\1\1\130\2\uffff\2\1\2\uffff\2"+
			"\1\1\uffff\2\1\1\uffff\1\1\1\uffff\1\1\1\uffff\1\1\1\uffff\2\1\1\uffff"+
			"\3\1",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA85_eot = DFA.unpackEncodedString(DFA85_eotS);
	static final short[] DFA85_eof = DFA.unpackEncodedString(DFA85_eofS);
	static final char[] DFA85_min = DFA.unpackEncodedStringToUnsignedChars(DFA85_minS);
	static final char[] DFA85_max = DFA.unpackEncodedStringToUnsignedChars(DFA85_maxS);
	static final short[] DFA85_accept = DFA.unpackEncodedString(DFA85_acceptS);
	static final short[] DFA85_special = DFA.unpackEncodedString(DFA85_specialS);
	static final short[][] DFA85_transition;

	static {
		int numStates = DFA85_transitionS.length;
		DFA85_transition = new short[numStates][];
		for (int i=0; i ^( LOOKUP[$functionCall.start] functionCall ( indexes )? ) | PropertyPlaceholder -> ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder ) | Identifier rangeindex -> ^( RANGELOOKUP[$Identifier] Identifier rangeindex ) | DottedIdentifier rangeindex -> ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex ) | list ( indexes )? -> ^( LOOKUP[$list.start] list ( indexes )? ) | mapdef ( indexes )? -> ^( LOOKUP[$mapdef.start] mapdef ( indexes )? ) | DottedIdentifier ( indexes )? -> ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? ) | Identifier ( indexes )? -> ^( LOOKUP[$Identifier] Identifier ( indexes )? ) | String ( indexes )? -> ^( LOOKUP[$String] String ( indexes )? ) | QuotedString ( indexes )? -> ^( LOOKUP[$QuotedString] QuotedString ( indexes )? ) | '(' expression ')' ( indexes )? -> ^( LOOKUP[$expression.start] expression ( indexes )? ) );";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA85_15 = input.LA(1);
						 
						int index85_15 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred233_Reflex()) ) {s = 1;}
						else if ( (synpred235_Reflex()) ) {s = 91;}
						else if ( (synpred244_Reflex()) ) {s = 92;}
						 
						input.seek(index85_15);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA85_16 = input.LA(1);
						 
						int index85_16 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred233_Reflex()) ) {s = 1;}
						else if ( (synpred236_Reflex()) ) {s = 93;}
						else if ( (synpred242_Reflex()) ) {s = 94;}
						 
						input.seek(index85_16);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 85, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA77_eotS =
		"\175\uffff";
	static final String DFA77_eofS =
		"\1\2\174\uffff";
	static final String DFA77_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA77_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA77_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA77_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA77_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA77_eot = DFA.unpackEncodedString(DFA77_eotS);
	static final short[] DFA77_eof = DFA.unpackEncodedString(DFA77_eofS);
	static final char[] DFA77_min = DFA.unpackEncodedStringToUnsignedChars(DFA77_minS);
	static final char[] DFA77_max = DFA.unpackEncodedStringToUnsignedChars(DFA77_maxS);
	static final short[] DFA77_accept = DFA.unpackEncodedString(DFA77_acceptS);
	static final short[] DFA77_special = DFA.unpackEncodedString(DFA77_specialS);
	static final short[][] DFA77_transition;

	static {
		int numStates = DFA77_transitionS.length;
		DFA77_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 77, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA78_eotS =
		"\175\uffff";
	static final String DFA78_eofS =
		"\1\2\174\uffff";
	static final String DFA78_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA78_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA78_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA78_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA78_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA78_eot = DFA.unpackEncodedString(DFA78_eotS);
	static final short[] DFA78_eof = DFA.unpackEncodedString(DFA78_eofS);
	static final char[] DFA78_min = DFA.unpackEncodedStringToUnsignedChars(DFA78_minS);
	static final char[] DFA78_max = DFA.unpackEncodedStringToUnsignedChars(DFA78_maxS);
	static final short[] DFA78_accept = DFA.unpackEncodedString(DFA78_acceptS);
	static final short[] DFA78_special = DFA.unpackEncodedString(DFA78_specialS);
	static final short[][] DFA78_transition;

	static {
		int numStates = DFA78_transitionS.length;
		DFA78_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 78, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA79_eotS =
		"\175\uffff";
	static final String DFA79_eofS =
		"\1\2\174\uffff";
	static final String DFA79_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA79_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA79_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA79_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA79_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA79_eot = DFA.unpackEncodedString(DFA79_eotS);
	static final short[] DFA79_eof = DFA.unpackEncodedString(DFA79_eofS);
	static final char[] DFA79_min = DFA.unpackEncodedStringToUnsignedChars(DFA79_minS);
	static final char[] DFA79_max = DFA.unpackEncodedStringToUnsignedChars(DFA79_maxS);
	static final short[] DFA79_accept = DFA.unpackEncodedString(DFA79_acceptS);
	static final short[] DFA79_special = DFA.unpackEncodedString(DFA79_specialS);
	static final short[][] DFA79_transition;

	static {
		int numStates = DFA79_transitionS.length;
		DFA79_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 79, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA80_eotS =
		"\175\uffff";
	static final String DFA80_eofS =
		"\1\2\174\uffff";
	static final String DFA80_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA80_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA80_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA80_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA80_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA80_eot = DFA.unpackEncodedString(DFA80_eotS);
	static final short[] DFA80_eof = DFA.unpackEncodedString(DFA80_eofS);
	static final char[] DFA80_min = DFA.unpackEncodedStringToUnsignedChars(DFA80_minS);
	static final char[] DFA80_max = DFA.unpackEncodedStringToUnsignedChars(DFA80_maxS);
	static final short[] DFA80_accept = DFA.unpackEncodedString(DFA80_acceptS);
	static final short[] DFA80_special = DFA.unpackEncodedString(DFA80_specialS);
	static final short[][] DFA80_transition;

	static {
		int numStates = DFA80_transitionS.length;
		DFA80_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 80, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA81_eotS =
		"\175\uffff";
	static final String DFA81_eofS =
		"\1\2\174\uffff";
	static final String DFA81_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA81_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA81_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA81_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA81_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
	static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
	static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
	static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
	static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
	static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
	static final short[][] DFA81_transition;

	static {
		int numStates = DFA81_transitionS.length;
		DFA81_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 81, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA82_eotS =
		"\175\uffff";
	static final String DFA82_eofS =
		"\1\2\174\uffff";
	static final String DFA82_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA82_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA82_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA82_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA82_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
	static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
	static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
	static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
	static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
	static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
	static final short[][] DFA82_transition;

	static {
		int numStates = DFA82_transitionS.length;
		DFA82_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 82, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA83_eotS =
		"\175\uffff";
	static final String DFA83_eofS =
		"\1\2\174\uffff";
	static final String DFA83_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA83_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA83_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA83_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA83_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA83_eot = DFA.unpackEncodedString(DFA83_eotS);
	static final short[] DFA83_eof = DFA.unpackEncodedString(DFA83_eofS);
	static final char[] DFA83_min = DFA.unpackEncodedStringToUnsignedChars(DFA83_minS);
	static final char[] DFA83_max = DFA.unpackEncodedStringToUnsignedChars(DFA83_maxS);
	static final short[] DFA83_accept = DFA.unpackEncodedString(DFA83_acceptS);
	static final short[] DFA83_special = DFA.unpackEncodedString(DFA83_specialS);
	static final short[][] DFA83_transition;

	static {
		int numStates = DFA83_transitionS.length;
		DFA83_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 83, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA84_eotS =
		"\175\uffff";
	static final String DFA84_eofS =
		"\1\2\174\uffff";
	static final String DFA84_minS =
		"\1\5\1\0\173\uffff";
	static final String DFA84_maxS =
		"\1\u00df\1\0\173\uffff";
	static final String DFA84_acceptS =
		"\2\uffff\1\2\171\uffff\1\1";
	static final String DFA84_specialS =
		"\1\uffff\1\0\173\uffff}>";
	static final String[] DFA84_transitionS = {
			"\7\2\1\uffff\2\2\1\uffff\3\2\2\uffff\1\2\2\uffff\2\2\2\uffff\5\2\1\uffff"+
			"\5\2\3\uffff\1\2\2\uffff\2\2\1\uffff\4\2\1\uffff\3\2\1\uffff\1\2\7\uffff"+
			"\3\2\5\uffff\3\2\1\uffff\12\2\11\uffff\1\2\2\uffff\1\2\1\uffff\4\2\2"+
			"\uffff\2\2\3\uffff\2\2\2\uffff\4\2\2\uffff\1\2\3\uffff\1\2\1\uffff\7"+
			"\2\1\uffff\5\2\1\1\1\2\1\uffff\1\2\12\uffff\10\2\1\uffff\3\2\1\uffff"+
			"\1\2\4\uffff\6\2\1\uffff\2\2\4\uffff\1\2\1\uffff\3\2\1\uffff\4\2\1\uffff"+
			"\3\2\2\uffff\2\2\1\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\2\2\1\uffff"+
			"\3\2\3\uffff\1\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA84_eot = DFA.unpackEncodedString(DFA84_eotS);
	static final short[] DFA84_eof = DFA.unpackEncodedString(DFA84_eofS);
	static final char[] DFA84_min = DFA.unpackEncodedStringToUnsignedChars(DFA84_minS);
	static final char[] DFA84_max = DFA.unpackEncodedStringToUnsignedChars(DFA84_maxS);
	static final short[] DFA84_accept = DFA.unpackEncodedString(DFA84_acceptS);
	static final short[] DFA84_special = DFA.unpackEncodedString(DFA84_specialS);
	static final short[][] DFA84_transition;

	static {
		int numStates = DFA84_transitionS.length;
		DFA84_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 84, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA86_eotS =
		"\176\uffff";
	static final String DFA86_eofS =
		"\1\1\175\uffff";
	static final String DFA86_minS =
		"\1\5\35\uffff\1\0\137\uffff";
	static final String DFA86_maxS =
		"\1\u00df\35\uffff\1\0\137\uffff";
	static final String DFA86_acceptS =
		"\1\uffff\1\2\173\uffff\1\1";
	static final String DFA86_specialS =
		"\36\uffff\1\0\137\uffff}>";
	static final String[] DFA86_transitionS = {
			"\12\1\1\uffff\3\1\2\uffff\1\1\2\uffff\2\1\2\uffff\5\1\1\uffff\5\1\3\uffff"+
			"\1\1\2\uffff\2\1\1\uffff\4\1\1\uffff\3\1\1\uffff\1\1\7\uffff\3\1\5\uffff"+
			"\3\1\1\uffff\12\1\11\uffff\1\1\2\uffff\1\1\1\uffff\4\1\2\uffff\2\1\3"+
			"\uffff\2\1\2\uffff\4\1\2\uffff\1\1\3\uffff\1\1\1\uffff\7\1\1\uffff\5"+
			"\1\1\36\1\1\1\uffff\1\1\12\uffff\10\1\1\uffff\3\1\1\uffff\1\1\4\uffff"+
			"\6\1\1\uffff\2\1\4\uffff\1\1\1\uffff\3\1\1\uffff\4\1\1\uffff\3\1\2\uffff"+
			"\2\1\1\uffff\4\1\1\uffff\1\1\1\uffff\1\1\1\uffff\2\1\1\uffff\3\1\3\uffff"+
			"\1\1",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA86_eot = DFA.unpackEncodedString(DFA86_eotS);
	static final short[] DFA86_eof = DFA.unpackEncodedString(DFA86_eofS);
	static final char[] DFA86_min = DFA.unpackEncodedStringToUnsignedChars(DFA86_minS);
	static final char[] DFA86_max = DFA.unpackEncodedStringToUnsignedChars(DFA86_maxS);
	static final short[] DFA86_accept = DFA.unpackEncodedString(DFA86_acceptS);
	static final short[] DFA86_special = DFA.unpackEncodedString(DFA86_specialS);
	static final short[][] DFA86_transition;

	static {
		int numStates = DFA86_transitionS.length;
		DFA86_transition = new short[numStates][];
		for (int i=0; i=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 86, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	public static final BitSet FOLLOW_metaBlock_in_parse370 = new BitSet(new long[]{0x028EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_mainBlock_in_parse373 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_229_in_metaBlock386 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_metaBlock388 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000000L,0x0008000000000000L,0x0000030000000000L});
	public static final BitSet FOLLOW_metaStatement_in_metaBlock390 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000000L,0x0008000000000000L,0x0000030000000000L});
	public static final BitSet FOLLOW_End_in_metaBlock393 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_232_in_metaStatement410 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_String_in_metaStatement415 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement417 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L,0x0000000000000000L,0x0000045000000000L});
	public static final BitSet FOLLOW_set_in_metaStatement421 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement437 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_String_in_metaStatement441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_metaStatement444 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Return_in_metaStatement452 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L,0x0000000000000000L,0x0000045000000000L});
	public static final BitSet FOLLOW_set_in_metaStatement456 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement472 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_String_in_metaStatement476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_metaStatement478 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_233_in_metaStatement486 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_String_in_metaStatement490 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement492 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_String_in_metaStatement496 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_metaStatement498 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_block_in_mainBlock514 = new BitSet(new long[]{0x0000000000000000L});
	public static final BitSet FOLLOW_EOF_in_mainBlock516 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_statement_in_block536 = new BitSet(new long[]{0x028EE71D60676B42L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_functionDecl_in_block540 = new BitSet(new long[]{0x028EE71D60676B42L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_structureDecl_in_block544 = new BitSet(new long[]{0x028EE71D60676B42L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_Return_in_block551 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_block553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_block555 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assignment_in_statement598 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement600 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_importStatement_in_statement613 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement615 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_port_in_statement626 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement628 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pull_in_statement639 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement641 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_metapull_in_statement652 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement654 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_push_in_statement665 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement667 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_patchStatement_in_statement678 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_statement685 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement687 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_throwStatement_in_statement698 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement700 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_breakStatement_in_statement711 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement713 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_continueStatement_in_statement724 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_statement726 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_matchStatement_in_statement737 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_switchStatement_in_statement744 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ifStatement_in_statement751 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_forStatement_in_statement758 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pforStatement_in_statement765 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_whileStatement_in_statement772 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_guardedStatement_in_statement779 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_exportStatement_in_statement786 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Unsupported_in_statement794 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SColon_in_statement805 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_statement816 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Export_in_exportStatement856 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_exportStatement858 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_exportStatement862 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_exportStatement864 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Const_in_assignment894 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_assignment896 = new BitSet(new long[]{0x0000000000001000L});
	public static final BitSet FOLLOW_Assign_in_assignment898 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_assignment900 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_assignment927 = new BitSet(new long[]{0x0000000000001000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_DottedIdentifier_in_assignment931 = new BitSet(new long[]{0x0000000000001000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_assignment934 = new BitSet(new long[]{0x0000000000001000L});
	public static final BitSet FOLLOW_Assign_in_assignment937 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_assignment939 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_assignment969 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
	public static final BitSet FOLLOW_221_in_assignment971 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_assignment973 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_assignment997 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
	public static final BitSet FOLLOW_222_in_assignment999 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_assignment1001 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Break_in_breakStatement1030 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Continue_in_continueStatement1047 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Import_in_importStatement1064 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_importStatement1068 = new BitSet(new long[]{0x0000000000000402L,0x0000000000000000L,0x0000000000000000L,0x0000080400000000L});
	public static final BitSet FOLLOW_As_in_importStatement1071 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_importStatement1075 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000080400000000L});
	public static final BitSet FOLLOW_235_in_importStatement1080 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_importStatement1082 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_importStatement1086 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_importStatement1088 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
	public static final BitSet FOLLOW_226_in_importStatement1093 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_jarUriList_in_importStatement1097 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_port1149 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
	public static final BitSet FOLLOW_PortA_in_port1151 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_port1155 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PortA_in_port1176 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_port1178 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_patchStatement1216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_Patch_in_patchStatement1218 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_patchStatement1220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_patchStatement1222 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_patchStatement1224 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_patchStatement1226 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_patchStatement1245 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_Patch_in_patchStatement1247 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_patchStatement1249 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_patchStatement1251 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_patchStatement1253 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_patchStatement1255 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_pull1281 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000800000000L});
	public static final BitSet FOLLOW_PullVal_in_pull1283 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_pull1285 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_metapull1314 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_224_in_metapull1316 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_metapull1318 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_push1349 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_PushVal_in_push1351 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_push1355 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Throw_in_throwStatement1387 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_throwStatement1389 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PackageIdentifier_in_functionCall1413 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1415 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_functionCall1417 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1420 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Println_in_functionCall1439 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1441 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1443 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1446 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Print_in_functionCall1466 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1468 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1470 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1472 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Size_in_functionCall1494 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1496 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1498 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1500 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Keys_in_functionCall1523 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1525 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1527 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1529 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Sort_in_functionCall1552 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1554 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1558 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_functionCall1560 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1564 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1566 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Collate_in_functionCall1593 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1595 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1599 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_functionCall1601 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1605 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1607 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Date_in_functionCall1631 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1633 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_functionCall1635 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1638 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Time_in_functionCall1663 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1665 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1667 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1670 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GetLine_in_functionCall1693 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1695 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1697 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1700 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GetCh_in_functionCall1720 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1722 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1724 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1727 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Capabilities_in_functionCall1749 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1751 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1753 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_HasCapability_in_functionCall1773 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1775 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1777 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1779 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Cast_in_functionCall1797 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1800 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1804 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_functionCall1806 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_functionCall1810 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1812 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_functionCall1837 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1839 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_functionCall1841 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1844 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_functionCall1863 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1865 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_functionCall1867 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1870 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_func2_in_functionCall1921 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_TypeOf_in_func21935 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func21937 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func21939 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func21941 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Assert_in_func21962 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func21964 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func21968 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func21970 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Assert_in_func21995 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func21997 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22001 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22003 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22007 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22009 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Replace_in_func22034 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22036 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22040 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22042 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22046 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22048 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22052 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22054 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RPull_in_func22079 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22081 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22085 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22087 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RPush_in_func22106 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22108 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22112 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22114 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22118 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func22121 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22125 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22128 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Transpose_in_func22154 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22156 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22158 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22160 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_B64Compress_in_func22178 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22180 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22182 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22184 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_B64Decompress_in_func22202 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22204 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22206 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22208 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Debug_in_func22226 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22228 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22230 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22232 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Evals_in_func22254 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22256 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22258 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22260 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ReadDir_in_func22282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22284 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22286 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22288 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MkDir_in_func22308 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22310 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22312 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22314 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IsFile_in_func22336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22338 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22340 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22342 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IsFolder_in_func22363 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22365 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22367 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22369 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_File_in_func22388 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22390 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22392 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22394 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Delete_in_func22419 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22421 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22423 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22425 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Archive_in_func22446 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22448 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22450 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22452 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Port_in_func22472 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22474 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22476 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22478 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Suspend_in_func22501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22503 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22505 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22507 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Difference_in_func22527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22529 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22531 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22533 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Remove_in_func22552 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22554 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func22556 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22558 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22562 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22564 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Join_in_func22585 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22587 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22589 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22591 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Unique_in_func22616 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22618 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22620 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22622 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Copy_in_func22645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22647 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22651 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22653 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22657 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22659 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Close_in_func22681 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22683 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22685 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22687 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Timer_in_func22709 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22711 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22713 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22716 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Vars_in_func22739 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22741 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22743 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MergeIf_in_func22778 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22780 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22782 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22784 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Format_in_func22806 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22808 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22810 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22812 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Merge_in_func22830 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22832 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func22834 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22836 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Message_in_func22860 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22862 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22866 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22868 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22872 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22874 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PutCache_in_func22896 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22898 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22902 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func22904 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22908 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func22911 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22915 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22919 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GetCache_in_func22945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22947 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22951 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22953 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Json_in_func22972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func22974 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func22976 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func22978 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FromJson_in_func23002 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23004 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23006 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23008 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_UrlEncode_in_func23027 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23029 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23031 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23033 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_UrlDecode_in_func23052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23054 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23056 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23058 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MD5_in_func23077 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23079 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23081 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23083 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MapFn_in_func23107 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23109 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23111 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23113 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23115 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23117 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FilterFn_in_func23137 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23139 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23141 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23143 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23145 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23147 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Fold_in_func23167 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23169 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23171 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23173 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23175 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23177 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23179 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23181 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Any_in_func23203 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23205 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23207 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23209 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23211 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23213 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_All_in_func23233 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23235 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23237 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23239 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23241 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23243 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_TakeWhile_in_func23263 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23265 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23267 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23269 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23271 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23273 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DropWhile_in_func23293 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23295 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23297 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23299 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23301 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23303 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SplitWith_in_func23323 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23325 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func23327 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23329 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23331 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23333 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Split_in_func23353 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23355 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23359 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23361 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23365 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23367 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23371 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23373 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Uuid_in_func23398 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23400 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23402 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AsyncCall_in_func23434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23436 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23440 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func23443 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23447 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23451 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AsyncCallScript_in_func23508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23510 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23514 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23516 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23520 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func23523 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23527 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23531 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AsyncStatus_in_func23591 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23593 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23595 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23597 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SuspendWait_in_func23622 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23624 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func23626 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23628 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Wait_in_func23647 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23649 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23653 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func23656 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23660 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23662 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23666 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23670 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Chain_in_func23731 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23733 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23737 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func23740 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23744 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23748 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Signal_in_func23805 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23807 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23811 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23813 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23817 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23819 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Sleep_in_func23875 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23878 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23880 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23882 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Matches_in_func23903 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23905 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23909 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23911 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23915 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23917 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Rand_in_func23939 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23943 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23945 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23947 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Spawn_in_func23968 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func23970 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23974 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func23977 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23981 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func23983 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func23987 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func23991 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Defined_in_func24052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24054 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func24056 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24058 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Defined_in_func24078 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24080 = new BitSet(new long[]{0x028E641D60076B40L,0x44431981007E6E04L,0x7417E1272800721FL,0x000000000ED56CCFL});
	public static final BitSet FOLLOW_lookup_in_func24082 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24084 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Round_in_func24104 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24106 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24110 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_func24113 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24117 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24121 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Lib_in_func24178 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24182 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24184 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24186 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Call_in_func24208 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24211 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24215 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func24217 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24221 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func24223 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24227 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24229 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_New_in_func24288 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24292 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24296 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24298 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GenSchema_in_func24351 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24353 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24357 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24359 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GenStruct_in_func24412 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24414 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_func24416 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func24418 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24422 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24424 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Template_in_func24479 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24481 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24485 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_func24487 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_func24491 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24493 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_KernelIdentifier_in_func24549 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_func24551 = new BitSet(new long[]{0x028E641D70276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_func24553 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_func24556 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Match_in_matchStatement4617 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_matchStatement4619 = new BitSet(new long[]{0x0040000000000400L});
	public static final BitSet FOLLOW_As_in_matchStatement4622 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_matchStatement4624 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_matchStatement4628 = new BitSet(new long[]{0x8000000000000000L,0x0000004000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_actions_in_matchStatement4630 = new BitSet(new long[]{0x8000000000000000L,0x0000004000000000L,0x0000000000020000L});
	public static final BitSet FOLLOW_otherwise_in_matchStatement4633 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_matchStatement4636 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_comparator_in_actions4666 = new BitSet(new long[]{0x0040000000000000L,0x0000004000000000L});
	public static final BitSet FOLLOW_Do_in_actions4669 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_actions4671 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_actions4673 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Otherwise_in_otherwise4693 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_otherwise4695 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_otherwise4697 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_otherwise4699 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Is_in_comparator4719 = new BitSet(new long[]{0x0000000000000000L,0x0030000000018002L,0x0000000000000100L});
	public static final BitSet FOLLOW_set_in_comparator4721 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_comparator4745 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Is_in_comparator4751 = new BitSet(new long[]{0x0000000000001000L});
	public static final BitSet FOLLOW_Assign_in_comparator4753 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_comparator4757 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Is_in_comparator4764 = new BitSet(new long[]{0x00200000000000A0L,0x0000000000000008L,0x0000000000010060L,0x0000000000000020L});
	public static final BitSet FOLLOW_set_in_comparator4766 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_comparator4800 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Switch_in_switchStatement4817 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_switchStatement4819 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_switchStatement4821 = new BitSet(new long[]{0x028F641DE0276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_caseStatement_in_switchStatement4823 = new BitSet(new long[]{0x828F641DE0276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_End_in_switchStatement4826 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_variant_in_caseStatement4851 = new BitSet(new long[]{0x02CF641DE0276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_Do_in_caseStatement4854 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_caseStatement4856 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_caseStatement4858 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_variant4881 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
	public static final BitSet FOLLOW_Integer_in_variant4883 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_variant4894 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
	public static final BitSet FOLLOW_Number_in_variant4896 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_variant4907 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
	public static final BitSet FOLLOW_Long_in_variant4909 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_variant4920 = new BitSet(new long[]{0x0000000000200000L});
	public static final BitSet FOLLOW_Bool_in_variant4922 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_variant4935 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_String_in_variant4937 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Default_in_variant4948 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Case_in_variant4955 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000010000000000L});
	public static final BitSet FOLLOW_QuotedString_in_variant4957 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_variant4966 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ifStat_in_ifStatement4984 = new BitSet(new long[]{0xC000000000000002L});
	public static final BitSet FOLLOW_elseIfStat_in_ifStatement4986 = new BitSet(new long[]{0xC000000000000002L});
	public static final BitSet FOLLOW_elseStat_in_ifStatement4989 = new BitSet(new long[]{0x8000000000000002L});
	public static final BitSet FOLLOW_End_in_ifStatement4992 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_ifStat5022 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_ifStat5024 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_ifStat5026 = new BitSet(new long[]{0x028EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_ifStat5028 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_ifStat5046 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_ifStat5048 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_ifStat5050 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_ifStat5052 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_ifStat5054 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseIfStat5080 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_If_in_elseIfStat5082 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_elseIfStat5084 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_elseIfStat5086 = new BitSet(new long[]{0x028EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_elseIfStat5088 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseIfStat5106 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_If_in_elseIfStat5108 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_elseIfStat5110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_elseIfStat5112 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_elseIfStat5114 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_elseIfStat5116 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseStat5141 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_elseStat5143 = new BitSet(new long[]{0x028EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_elseStat5145 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseStat5161 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_elseStat5163 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_elseStat5165 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_elseStat5167 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Def_in_functionDecl5190 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_functionDecl5192 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_functionDecl5194 = new BitSet(new long[]{0x0000000010000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_idList_in_functionDecl5196 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_functionDecl5199 = new BitSet(new long[]{0x828EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_OBrace_in_functionDecl5201 = new BitSet(new long[]{0x828EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_functionDecl5204 = new BitSet(new long[]{0x8000000001000000L});
	public static final BitSet FOLLOW_set_in_functionDecl5206 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Structure_in_structureDecl5231 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_structureDecl5233 = new BitSet(new long[]{0x0040000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_set_in_structureDecl5235 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_structureMemberList_in_structureDecl5243 = new BitSet(new long[]{0x8000000001000000L});
	public static final BitSet FOLLOW_set_in_structureDecl5245 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_structureMember_in_structureMemberList5272 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_structureMember5287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000044A00000010L});
	public static final BitSet FOLLOW_structureType_in_structureMember5289 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_structureMember5291 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_objectStructureType_in_structureType5313 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_simpleStructureType_in_structureType5317 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_arrayStructureType_in_structureType5321 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Structure_in_objectStructureType5335 = new BitSet(new long[]{0x0040000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_set_in_objectStructureType5342 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_structureMemberList_in_objectStructureType5350 = new BitSet(new long[]{0x8000000001000000L});
	public static final BitSet FOLLOW_set_in_objectStructureType5352 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_225_in_arrayStructureType5372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000008000000000L});
	public static final BitSet FOLLOW_231_in_arrayStructureType5374 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000044800000000L});
	public static final BitSet FOLLOW_simpleStructureType_in_arrayStructureType5376 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_set_in_simpleStructureType5390 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_For_in_forStatement5417 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_forStatement5419 = new BitSet(new long[]{0x0000000000001000L});
	public static final BitSet FOLLOW_Assign_in_forStatement5421 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_forStatement5423 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
	public static final BitSet FOLLOW_To_in_forStatement5425 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_forStatement5427 = new BitSet(new long[]{0x0040000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_Do_in_forStatement5431 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_forStatement5433 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_forStatement5435 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_forStatement5442 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_forStatement5444 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_forStatement5446 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_For_in_forStatement5474 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_forStatement5476 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
	public static final BitSet FOLLOW_In_in_forStatement5478 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_forStatement5480 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_forStatement5482 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_forStatement5484 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_forStatement5486 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PFor_in_pforStatement5518 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_pforStatement5520 = new BitSet(new long[]{0x0000000000001000L});
	public static final BitSet FOLLOW_Assign_in_pforStatement5522 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_pforStatement5524 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
	public static final BitSet FOLLOW_To_in_pforStatement5526 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_pforStatement5528 = new BitSet(new long[]{0x0040000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_Do_in_pforStatement5532 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_pforStatement5534 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_pforStatement5536 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_pforStatement5543 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_pforStatement5545 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_pforStatement5547 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PFor_in_pforStatement5575 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_pforStatement5577 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
	public static final BitSet FOLLOW_In_in_pforStatement5579 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_pforStatement5581 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_pforStatement5583 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_pforStatement5585 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_pforStatement5587 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_While_in_whileStatement5619 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_whileStatement5621 = new BitSet(new long[]{0x0040000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_Do_in_whileStatement5625 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_whileStatement5627 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_whileStatement5629 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_whileStatement5635 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_whileStatement5637 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_whileStatement5639 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Try_in_guardedStatement5665 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_guardedStatement5667 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_guardedStatement5671 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_guardedStatement5673 = new BitSet(new long[]{0x0000000200000000L});
	public static final BitSet FOLLOW_Catch_in_guardedStatement5675 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_guardedStatement5677 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_guardedStatement5679 = new BitSet(new long[]{0x828EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_guardedStatement5683 = new BitSet(new long[]{0x8000000000000000L});
	public static final BitSet FOLLOW_End_in_guardedStatement5685 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Try_in_guardedStatement5706 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_guardedStatement5708 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_guardedStatement5712 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_guardedStatement5714 = new BitSet(new long[]{0x0000000200000000L});
	public static final BitSet FOLLOW_Catch_in_guardedStatement5716 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_guardedStatement5718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_guardedStatement5720 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_guardedStatement5724 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_guardedStatement5726 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_idList5754 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_Comma_in_idList5757 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_idList5759 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_expression_in_exprList5784 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_Comma_in_exprList5787 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_exprList5789 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_condExpr_in_expression5823 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_orExpr_in_condExpr5838 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L,0x0000004000000000L});
	public static final BitSet FOLLOW_QMark_in_condExpr5859 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_condExpr5863 = new BitSet(new long[]{0x0000002000000000L});
	public static final BitSet FOLLOW_Colon_in_condExpr5865 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_condExpr5869 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_In_in_condExpr5893 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_condExpr5895 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_andExpr_in_orExpr5947 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_Or_in_orExpr5950 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_andExpr_in_orExpr5953 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_equExpr_in_andExpr5969 = new BitSet(new long[]{0x0000000000000082L});
	public static final BitSet FOLLOW_And_in_andExpr5972 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_equExpr_in_andExpr5975 = new BitSet(new long[]{0x0000000000000082L});
	public static final BitSet FOLLOW_relExpr_in_equExpr5991 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L,0x0000000000000100L});
	public static final BitSet FOLLOW_set_in_equExpr5994 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_relExpr_in_equExpr6003 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L,0x0000000000000100L});
	public static final BitSet FOLLOW_addExpr_in_relExpr6019 = new BitSet(new long[]{0x0000000000000002L,0x0030000000018000L});
	public static final BitSet FOLLOW_set_in_relExpr6022 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_addExpr_in_relExpr6039 = new BitSet(new long[]{0x0000000000000002L,0x0030000000018000L});
	public static final BitSet FOLLOW_mulExpr_in_addExpr6055 = new BitSet(new long[]{0x0000000000000022L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
	public static final BitSet FOLLOW_set_in_addExpr6058 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_mulExpr_in_addExpr6067 = new BitSet(new long[]{0x0000000000000022L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
	public static final BitSet FOLLOW_powExpr_in_mulExpr6083 = new BitSet(new long[]{0x0020000000000002L,0x0000000000000000L,0x0000000000000060L});
	public static final BitSet FOLLOW_set_in_mulExpr6086 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_powExpr_in_mulExpr6099 = new BitSet(new long[]{0x0020000000000002L,0x0000000000000000L,0x0000000000000060L});
	public static final BitSet FOLLOW_unaryExpr_in_powExpr6115 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000080000000L});
	public static final BitSet FOLLOW_Pow_in_powExpr6118 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_unaryExpr_in_powExpr6121 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000080000000L});
	public static final BitSet FOLLOW_Subtract_in_unaryExpr6137 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E04L,0x7417E12728007E1FL,0x000000000ED56CCFL});
	public static final BitSet FOLLOW_atom_in_unaryExpr6139 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Excl_in_unaryExpr6155 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E04L,0x7417E12728007E1FL,0x000000000ED56CCFL});
	public static final BitSet FOLLOW_atom_in_unaryExpr6157 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_atom_in_unaryExpr6173 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Subtract_in_sparsesep6186 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_sparsematrix6197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
	public static final BitSet FOLLOW_sparsesep_in_sparsematrix6199 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
	public static final BitSet FOLLOW_CBracket_in_sparsematrix6202 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Integer_in_atom6225 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Long_in_atom6232 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Number_in_atom6239 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Bool_in_atom6246 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Null_in_atom6253 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_sparsematrix_in_atom6260 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_lookup_in_atom6267 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_list6281 = new BitSet(new long[]{0x028E641D62276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_list6283 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CBracket_in_list6286 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_mapdef6309 = new BitSet(new long[]{0x028E641D61276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_keyValList_in_mapdef6311 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_mapdef6314 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_keyVal_in_keyValList6337 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_Comma_in_keyValList6340 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_keyVal_in_keyValList6342 = new BitSet(new long[]{0x0000004000000002L});
	public static final BitSet FOLLOW_expression_in_keyVal6369 = new BitSet(new long[]{0x0000002000000000L});
	public static final BitSet FOLLOW_Colon_in_keyVal6371 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_keyVal6375 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OParen_in_jarUriList6401 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000010000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_jarUri_in_jarUriList6403 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_Comma_in_jarUriList6406 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000010000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_jarUri_in_jarUriList6408 = new BitSet(new long[]{0x0000004010000000L});
	public static final BitSet FOLLOW_CParen_in_jarUriList6412 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_String_in_jarUri6440 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_QuotedString_in_jarUri6446 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_lookup6470 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6472 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PropertyPlaceholder_in_lookup6498 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_lookup6522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_rangeindex_in_lookup6524 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_lookup6548 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_rangeindex_in_lookup6550 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_list_in_lookup6568 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6570 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_mapdef_in_lookup6604 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6606 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_lookup6638 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6640 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_lookup6662 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6664 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_String_in_lookup6692 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6694 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_QuotedString_in_lookup6726 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6728 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OParen_in_lookup6754 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_lookup6756 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_lookup6758 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_lookup6760 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_indexes6788 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_indexes6790 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CBracket_in_indexes6792 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_OBracket_in_rangeindex6817 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000008ED56CEFL});
	public static final BitSet FOLLOW_expression_in_rangeindex6821 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000080000000L});
	public static final BitSet FOLLOW_223_in_rangeindex6824 = new BitSet(new long[]{0x028E641D62276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_rangeindex6828 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CBracket_in_rangeindex6831 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_statement_in_synpred11_Reflex536 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionDecl_in_synpred12_Reflex540 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_structureDecl_in_synpred13_Reflex544 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Return_in_synpred14_Reflex551 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_synpred14_Reflex553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred14_Reflex555 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assignment_in_synpred15_Reflex598 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred15_Reflex600 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_port_in_synpred17_Reflex626 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred17_Reflex628 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pull_in_synpred18_Reflex639 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred18_Reflex641 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_metapull_in_synpred19_Reflex652 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred19_Reflex654 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_push_in_synpred20_Reflex665 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred20_Reflex667 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_patchStatement_in_synpred21_Reflex678 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_synpred22_Reflex685 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred22_Reflex687 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_synpred45_Reflex1216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_Patch_in_synpred45_Reflex1218 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_synpred45_Reflex1220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
	public static final BitSet FOLLOW_OBrace_in_synpred45_Reflex1222 = new BitSet(new long[]{0x028EE71D61676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_synpred45_Reflex1224 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_CBrace_in_synpred45_Reflex1226 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Assert_in_synpred71_Reflex1962 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_synpred71_Reflex1964 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_synpred71_Reflex1968 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_synpred71_Reflex1970 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Assert_in_synpred72_Reflex1995 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_synpred72_Reflex1997 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_synpred72_Reflex2001 = new BitSet(new long[]{0x0000004000000000L});
	public static final BitSet FOLLOW_Comma_in_synpred72_Reflex2003 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_synpred72_Reflex2007 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_synpred72_Reflex2009 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Defined_in_synpred138_Reflex4052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_synpred138_Reflex4054 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_Identifier_in_synpred138_Reflex4056 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_synpred138_Reflex4058 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Defined_in_synpred139_Reflex4078 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_OParen_in_synpred139_Reflex4080 = new BitSet(new long[]{0x028E641D60076B40L,0x44431981007E6E04L,0x7417E1272800721FL,0x000000000ED56CCFL});
	public static final BitSet FOLLOW_lookup_in_synpred139_Reflex4082 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_CParen_in_synpred139_Reflex4084 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_elseIfStat_in_synpred176_Reflex4986 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_elseStat_in_synpred177_Reflex4989 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_End_in_synpred178_Reflex4992 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_synpred179_Reflex5022 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_synpred179_Reflex5024 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_synpred179_Reflex5026 = new BitSet(new long[]{0x028EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_synpred179_Reflex5028 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_synpred180_Reflex5080 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
	public static final BitSet FOLLOW_If_in_synpred180_Reflex5082 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_expression_in_synpred180_Reflex5084 = new BitSet(new long[]{0x0040000000000000L});
	public static final BitSet FOLLOW_Do_in_synpred180_Reflex5086 = new BitSet(new long[]{0x028EE71D60676B40L,0xC4C319A7007E7E1CL,0x743FE12768207E1FL,0x000000001EF77DFFL});
	public static final BitSet FOLLOW_block_in_synpred180_Reflex5088 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_synpred183_Reflex5201 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_set_in_synpred213_Reflex6058 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_mulExpr_in_synpred213_Reflex6067 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred232_Reflex6472 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_synpred233_Reflex6470 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_synpred233_Reflex6472 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_synpred235_Reflex6522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_rangeindex_in_synpred235_Reflex6524 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_synpred236_Reflex6548 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_rangeindex_in_synpred236_Reflex6550 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred237_Reflex6570 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred239_Reflex6606 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred241_Reflex6640 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_synpred242_Reflex6638 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_synpred242_Reflex6640 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred243_Reflex6664 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_synpred244_Reflex6662 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_indexes_in_synpred244_Reflex6664 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred245_Reflex6694 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred247_Reflex6728 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_indexes_in_synpred249_Reflex6760 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_synpred250_Reflex6788 = new BitSet(new long[]{0x028E641D60276B40L,0x44C319A1007E6E0CL,0x7417E12728007E1FL,0x000000000ED56CEFL});
	public static final BitSet FOLLOW_exprList_in_synpred250_Reflex6790 = new BitSet(new long[]{0x0000000002000000L});
	public static final BitSet FOLLOW_CBracket_in_synpred250_Reflex6792 = new BitSet(new long[]{0x0000000000000002L});
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy