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

reflex.ReflexParser Maven / Gradle / Ivy

There is a newer version: 3.0.4
Show newest version
// $ANTLR 3.5.2 /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g 2016-03-01 15:52:41

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

	// 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, String requestType, String requestData) {
	        scriptInfo.addParameter(parameterName, parameterType, description, MetaParamRequest.valueOf(requestType), requestData);
	  }

	  @Override
	  public void reportError(RecognitionException e) {
	      super.reportError(e);
	  }


	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:351: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:352:3: ( ( metaBlock )? mainBlock )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:352:6: ( metaBlock )? mainBlock
			{
			root_0 = (Object)adaptor.nil();


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

					}
					break;

			}

			pushFollow(FOLLOW_mainBlock_in_parse323);
			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:355: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_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_210=new RewriteRuleTokenStream(adaptor,"token 210");
		RewriteRuleSubtreeStream stream_metaStatement=new RewriteRuleSubtreeStream(adaptor,"rule metaStatement");

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

			Do4=(Token)match(input,Do,FOLLOW_Do_in_metaBlock338); 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:356:15: ( metaStatement )*
			loop2:
			while (true) {
				int alt2=2;
				int LA2_0 = input.LA(1);
				if ( (LA2_0==Return||(LA2_0 >= 213 && LA2_0 <= 214)) ) {
					alt2=1;
				}

				switch (alt2) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:356:15: metaStatement
					{
					pushFollow(FOLLOW_metaStatement_in_metaBlock340);
					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_metaBlock343); 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();
			// 356: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:359:1: metaStatement : ( 'param' name= String ',' metaType= ( 'list' | 'map' | 'number' | 'string' ) ',' desc= String ',' reqType= ( 'FIXEDLIST' | 'FREESTRING' | 'SCRIPTLIST' ) ',' requestData= 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 reqType=null;
		Token requestData=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 char_literal11=null;
		Token char_literal12=null;
		Token Return13=null;
		Token char_literal14=null;
		Token char_literal15=null;
		Token string_literal16=null;
		Token char_literal17=null;
		Token char_literal18=null;

		Object name_tree=null;
		Object metaType_tree=null;
		Object desc_tree=null;
		Object reqType_tree=null;
		Object requestData_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 char_literal11_tree=null;
		Object char_literal12_tree=null;
		Object Return13_tree=null;
		Object char_literal14_tree=null;
		Object char_literal15_tree=null;
		Object string_literal16_tree=null;
		Object char_literal17_tree=null;
		Object char_literal18_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:360:3: ( 'param' name= String ',' metaType= ( 'list' | 'map' | 'number' | 'string' ) ',' desc= String ',' reqType= ( 'FIXEDLIST' | 'FREESTRING' | 'SCRIPTLIST' ) ',' requestData= String ';' | Return ret= ( 'list' | 'map' | 'number' | 'string' ) ',' meta= String ';' | 'property' name= String ',' value= String ';' )
			int alt3=3;
			switch ( input.LA(1) ) {
			case 213:
				{
				alt3=1;
				}
				break;
			case Return:
				{
				alt3=2;
				}
				break;
			case 214:
				{
				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:360:5: 'param' name= String ',' metaType= ( 'list' | 'map' | 'number' | 'string' ) ',' desc= String ',' reqType= ( 'FIXEDLIST' | 'FREESTRING' | 'SCRIPTLIST' ) ',' requestData= String ';'
					{
					root_0 = (Object)adaptor.nil();


					string_literal7=(Token)match(input,213,FOLLOW_213_in_metaStatement360); 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_metaStatement365); 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_metaStatement367); 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)==209||input.LA(1)==211||input.LA(1)==215 ) {
						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_metaStatement387); 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_metaStatement391); 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,Comma,FOLLOW_Comma_in_metaStatement393); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal10_tree = (Object)adaptor.create(char_literal10);
					adaptor.addChild(root_0, char_literal10_tree);
					}

					reqType=input.LT(1);
					if ( (input.LA(1) >= 203 && input.LA(1) <= 205) ) {
						input.consume();
						if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(reqType));
						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_literal11=(Token)match(input,Comma,FOLLOW_Comma_in_metaStatement413); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal11_tree = (Object)adaptor.create(char_literal11);
					adaptor.addChild(root_0, char_literal11_tree);
					}

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

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

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


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

					ret=input.LT(1);
					if ( input.LA(1)==MapFn||input.LA(1)==209||input.LA(1)==211||input.LA(1)==215 ) {
						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_literal14=(Token)match(input,Comma,FOLLOW_Comma_in_metaStatement447); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal14_tree = (Object)adaptor.create(char_literal14);
					adaptor.addChild(root_0, char_literal14_tree);
					}

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

					char_literal15=(Token)match(input,SColon,FOLLOW_SColon_in_metaStatement453); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal15_tree = (Object)adaptor.create(char_literal15);
					adaptor.addChild(root_0, char_literal15_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:362:5: 'property' name= String ',' value= String ';'
					{
					root_0 = (Object)adaptor.nil();


					string_literal16=(Token)match(input,214,FOLLOW_214_in_metaStatement461); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal16_tree = (Object)adaptor.create(string_literal16);
					adaptor.addChild(root_0, string_literal16_tree);
					}

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

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

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

					char_literal18=(Token)match(input,SColon,FOLLOW_SColon_in_metaStatement473); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal18_tree = (Object)adaptor.create(char_literal18);
					adaptor.addChild(root_0, char_literal18_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:365: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 EOF20=null;
		ParserRuleReturnScope block19 =null;

		Object EOF20_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:366:3: ( block EOF -> block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:366:6: block EOF
			{
			pushFollow(FOLLOW_block_in_mainBlock489);
			block19=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block19.getTree());
			EOF20=(Token)match(input,EOF,FOLLOW_EOF_in_mainBlock491); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_EOF.add(EOF20);

			// 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();
			// 366: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:369: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 Return24=null;
		Token char_literal26=null;
		ParserRuleReturnScope statement21 =null;
		ParserRuleReturnScope functionDecl22 =null;
		ParserRuleReturnScope structureDecl23 =null;
		ParserRuleReturnScope expression25 =null;

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

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:3: ( ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) ) -> ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:5: ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) )
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:5: ( ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:6: ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? )
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:6: ( ( statement | functionDecl | structureDecl )* ( Return expression ';' )? )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:7: ( statement | functionDecl | structureDecl )* ( Return expression ';' )?
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370: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:370:8: statement
					{
					pushFollow(FOLLOW_statement_in_block511);
					statement21=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement21.getTree());
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:20: functionDecl
					{
					pushFollow(FOLLOW_functionDecl_in_block515);
					functionDecl22=functionDecl();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_functionDecl.add(functionDecl22.getTree());
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:35: structureDecl
					{
					pushFollow(FOLLOW_structureDecl_in_block519);
					structureDecl23=structureDecl();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_structureDecl.add(structureDecl23.getTree());
					}
					break;

				default :
					break loop4;
				}
			}

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

					pushFollow(FOLLOW_expression_in_block528);
					expression25=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression25.getTree());
					char_literal26=(Token)match(input,SColon,FOLLOW_SColon_in_block530); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal26);

					}
					break;

			}

			}

			}

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

			root_0 = (Object)adaptor.nil();
			// 371:6: -> ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:371: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:371: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:371: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:371: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:371: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:375:1: statement : ( assignment ';' -> assignment | importStatement ';' -> importStatement | port ';' -> port | pull ';' -> pull | metapull ';' -> metapull | push ';' -> push | patchStatement | functionCall ';' -> functionCall | throwStatement ';' -> throwStatement | breakStatement ';' -> breakStatement | continueStatement ';' -> continueStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement | exportStatement );
	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_literal28=null;
		Token char_literal30=null;
		Token char_literal32=null;
		Token char_literal34=null;
		Token char_literal36=null;
		Token char_literal38=null;
		Token char_literal41=null;
		Token char_literal43=null;
		Token char_literal45=null;
		Token char_literal47=null;
		ParserRuleReturnScope assignment27 =null;
		ParserRuleReturnScope importStatement29 =null;
		ParserRuleReturnScope port31 =null;
		ParserRuleReturnScope pull33 =null;
		ParserRuleReturnScope metapull35 =null;
		ParserRuleReturnScope push37 =null;
		ParserRuleReturnScope patchStatement39 =null;
		ParserRuleReturnScope functionCall40 =null;
		ParserRuleReturnScope throwStatement42 =null;
		ParserRuleReturnScope breakStatement44 =null;
		ParserRuleReturnScope continueStatement46 =null;
		ParserRuleReturnScope ifStatement48 =null;
		ParserRuleReturnScope forStatement49 =null;
		ParserRuleReturnScope pforStatement50 =null;
		ParserRuleReturnScope whileStatement51 =null;
		ParserRuleReturnScope guardedStatement52 =null;
		ParserRuleReturnScope exportStatement53 =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_literal38_tree=null;
		Object char_literal41_tree=null;
		Object char_literal43_tree=null;
		Object char_literal45_tree=null;
		Object char_literal47_tree=null;
		RewriteRuleTokenStream stream_SColon=new RewriteRuleTokenStream(adaptor,"token SColon");
		RewriteRuleSubtreeStream stream_port=new RewriteRuleSubtreeStream(adaptor,"rule port");
		RewriteRuleSubtreeStream stream_functionCall=new RewriteRuleSubtreeStream(adaptor,"rule functionCall");
		RewriteRuleSubtreeStream stream_assignment=new RewriteRuleSubtreeStream(adaptor,"rule assignment");
		RewriteRuleSubtreeStream stream_pull=new RewriteRuleSubtreeStream(adaptor,"rule pull");
		RewriteRuleSubtreeStream stream_metapull=new RewriteRuleSubtreeStream(adaptor,"rule metapull");
		RewriteRuleSubtreeStream stream_importStatement=new RewriteRuleSubtreeStream(adaptor,"rule importStatement");
		RewriteRuleSubtreeStream stream_breakStatement=new RewriteRuleSubtreeStream(adaptor,"rule breakStatement");
		RewriteRuleSubtreeStream stream_throwStatement=new RewriteRuleSubtreeStream(adaptor,"rule throwStatement");
		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:376:3: ( assignment ';' -> assignment | importStatement ';' -> importStatement | port ';' -> port | pull ';' -> pull | metapull ';' -> metapull | push ';' -> push | patchStatement | functionCall ';' -> functionCall | throwStatement ';' -> throwStatement | breakStatement ';' -> breakStatement | continueStatement ';' -> continueStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement | exportStatement )
			int alt6=17;
			alt6 = dfa6.predict(input);
			switch (alt6) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:376:6: assignment ';'
					{
					pushFollow(FOLLOW_assignment_in_statement574);
					assignment27=assignment();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assignment.add(assignment27.getTree());
					char_literal28=(Token)match(input,SColon,FOLLOW_SColon_in_statement576); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal28);

					// 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();
					// 376:23: -> 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:377:6: importStatement ';'
					{
					pushFollow(FOLLOW_importStatement_in_statement589);
					importStatement29=importStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_importStatement.add(importStatement29.getTree());
					char_literal30=(Token)match(input,SColon,FOLLOW_SColon_in_statement591); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal30);

					// 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();
					// 377: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:378:6: port ';'
					{
					pushFollow(FOLLOW_port_in_statement602);
					port31=port();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_port.add(port31.getTree());
					char_literal32=(Token)match(input,SColon,FOLLOW_SColon_in_statement604); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal32);

					// 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();
					// 378: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:379:6: pull ';'
					{
					pushFollow(FOLLOW_pull_in_statement615);
					pull33=pull();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_pull.add(pull33.getTree());
					char_literal34=(Token)match(input,SColon,FOLLOW_SColon_in_statement617); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal34);

					// 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();
					// 379: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:380:6: metapull ';'
					{
					pushFollow(FOLLOW_metapull_in_statement628);
					metapull35=metapull();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_metapull.add(metapull35.getTree());
					char_literal36=(Token)match(input,SColon,FOLLOW_SColon_in_statement630); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal36);

					// 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();
					// 380: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:381:6: push ';'
					{
					pushFollow(FOLLOW_push_in_statement641);
					push37=push();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_push.add(push37.getTree());
					char_literal38=(Token)match(input,SColon,FOLLOW_SColon_in_statement643); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal38);

					// 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();
					// 381: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:382:6: patchStatement
					{
					root_0 = (Object)adaptor.nil();


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

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

					// 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();
					// 383: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:384:6: throwStatement ';'
					{
					pushFollow(FOLLOW_throwStatement_in_statement674);
					throwStatement42=throwStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_throwStatement.add(throwStatement42.getTree());
					char_literal43=(Token)match(input,SColon,FOLLOW_SColon_in_statement676); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal43);

					// 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();
					// 384: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:385:6: breakStatement ';'
					{
					pushFollow(FOLLOW_breakStatement_in_statement687);
					breakStatement44=breakStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_breakStatement.add(breakStatement44.getTree());
					char_literal45=(Token)match(input,SColon,FOLLOW_SColon_in_statement689); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal45);

					// 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();
					// 385: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:386:6: continueStatement ';'
					{
					pushFollow(FOLLOW_continueStatement_in_statement700);
					continueStatement46=continueStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_continueStatement.add(continueStatement46.getTree());
					char_literal47=(Token)match(input,SColon,FOLLOW_SColon_in_statement702); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SColon.add(char_literal47);

					// 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();
					// 386: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:387:6: ifStatement
					{
					root_0 = (Object)adaptor.nil();


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

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


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

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


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

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


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

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


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

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


					pushFollow(FOLLOW_exportStatement_in_statement748);
					exportStatement53=exportStatement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, exportStatement53.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) {

			      throw new ReflexParseException(e, getErrorMessage(e, this.getTokenNames()));
			  
		}

		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:398: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 Export54=null;
		Token Identifier55=null;
		Token End57=null;
		ParserRuleReturnScope block56 =null;

		Object Export54_tree=null;
		Object Identifier55_tree=null;
		Object End57_tree=null;
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_Export=new RewriteRuleTokenStream(adaptor,"token Export");
		RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");

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

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

			if ( state.backtracking==0 ) { namespaceStack.push((Identifier55!=null?Identifier55.getText():null)); }
			pushFollow(FOLLOW_block_in_exportStatement780);
			block56=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_block.add(block56.getTree());
			End57=(Token)match(input,End,FOLLOW_End_in_exportStatement782); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_End.add(End57);

			// 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();
			// 403:5: -> ^( EXPORT[$Identifier] Identifier block )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:403:8: ^( EXPORT[$Identifier] Identifier block )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXPORT, Identifier55), 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:407: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 ) );
	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 Const58=null;
		Token Identifier59=null;
		Token char_literal60=null;
		Token char_literal63=null;
		Token Identifier65=null;
		Token string_literal66=null;
		ParserRuleReturnScope expression61 =null;
		ParserRuleReturnScope indexes62 =null;
		ParserRuleReturnScope expression64 =null;
		ParserRuleReturnScope expression67 =null;

		Object i_tree=null;
		Object Const58_tree=null;
		Object Identifier59_tree=null;
		Object char_literal60_tree=null;
		Object char_literal63_tree=null;
		Object Identifier65_tree=null;
		Object string_literal66_tree=null;
		RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
		RewriteRuleTokenStream stream_200=new RewriteRuleTokenStream(adaptor,"token 200");
		RewriteRuleTokenStream stream_DottedIdentifier=new RewriteRuleTokenStream(adaptor,"token DottedIdentifier");
		RewriteRuleTokenStream stream_Const=new RewriteRuleTokenStream(adaptor,"token Const");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		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:408:3: ( Const Identifier '=' expression -> ^( CONSTASSIGNMENT[$Identifier] Identifier expression ) |i= ( Identifier | DottedIdentifier ) ( indexes )? '=' expression -> ^( ASSIGNMENT[$i] $i ( indexes )? expression ) | Identifier '+=' expression -> ^( PLUSASSIGNMENT[$Identifier] Identifier expression ) )
			int alt9=3;
			switch ( input.LA(1) ) {
			case Const:
				{
				alt9=1;
				}
				break;
			case Identifier:
				{
				int LA9_2 = input.LA(2);
				if ( (LA9_2==200) ) {
					alt9=3;
				}
				else if ( (LA9_2==Assign||LA9_2==OBracket) ) {
					alt9=2;
				}

				else {
					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:408:6: Const Identifier '=' expression
					{
					Const58=(Token)match(input,Const,FOLLOW_Const_in_assignment812); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Const.add(Const58);

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

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

					pushFollow(FOLLOW_expression_in_assignment818);
					expression61=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression61.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();
					// 409:6: -> ^( CONSTASSIGNMENT[$Identifier] Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:409:9: ^( CONSTASSIGNMENT[$Identifier] Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTASSIGNMENT, Identifier59), 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:410:7: i= ( Identifier | DottedIdentifier ) ( indexes )? '=' expression
					{
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:410: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:410:10: Identifier
							{
							i=(Token)match(input,Identifier,FOLLOW_Identifier_in_assignment845); 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:410:23: DottedIdentifier
							{
							i=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_assignment849); 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:410: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:410:41: indexes
							{
							pushFollow(FOLLOW_indexes_in_assignment852);
							indexes62=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes62.getTree());
							}
							break;

					}

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

					pushFollow(FOLLOW_expression_in_assignment857);
					expression64=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression64.getTree());
					// AST REWRITE
					// elements: indexes, i, 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();
					// 411:6: -> ^( ASSIGNMENT[$i] $i ( indexes )? expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:411: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:411: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:414:7: Identifier '+=' expression
					{
					Identifier65=(Token)match(input,Identifier,FOLLOW_Identifier_in_assignment887); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier65);

					string_literal66=(Token)match(input,200,FOLLOW_200_in_assignment889); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_200.add(string_literal66);

					pushFollow(FOLLOW_expression_in_assignment891);
					expression67=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression67.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();
					// 415:6: -> ^( PLUSASSIGNMENT[$Identifier] Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:415:9: ^( PLUSASSIGNMENT[$Identifier] Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PLUSASSIGNMENT, Identifier65), 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:418: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 Break68=null;

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

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

			// 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();
			// 419: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:422: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 Continue69=null;

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

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

			// 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: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:426:1: importStatement : Import l= Identifier ( 'as' r= Identifier )? ( 'with' '(' p= exprList ')' )? -> ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) ) ;
	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 Import70=null;
		Token string_literal71=null;
		Token string_literal72=null;
		Token char_literal73=null;
		Token char_literal74=null;
		ParserRuleReturnScope p =null;

		Object l_tree=null;
		Object r_tree=null;
		Object Import70_tree=null;
		Object string_literal71_tree=null;
		Object string_literal72_tree=null;
		Object char_literal73_tree=null;
		Object char_literal74_tree=null;
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleTokenStream stream_Import=new RewriteRuleTokenStream(adaptor,"token Import");
		RewriteRuleTokenStream stream_216=new RewriteRuleTokenStream(adaptor,"token 216");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_207=new RewriteRuleTokenStream(adaptor,"token 207");
		RewriteRuleSubtreeStream stream_exprList=new RewriteRuleSubtreeStream(adaptor,"rule exprList");

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

			l=(Token)match(input,Identifier,FOLLOW_Identifier_in_importStatement958); 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:427:25: ( 'as' r= Identifier )?
			int alt10=2;
			int LA10_0 = input.LA(1);
			if ( (LA10_0==207) ) {
				alt10=1;
			}
			switch (alt10) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:427:26: 'as' r= Identifier
					{
					string_literal71=(Token)match(input,207,FOLLOW_207_in_importStatement961); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_207.add(string_literal71);

					r=(Token)match(input,Identifier,FOLLOW_Identifier_in_importStatement965); 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:427:46: ( 'with' '(' p= exprList ')' )?
			int alt11=2;
			int LA11_0 = input.LA(1);
			if ( (LA11_0==216) ) {
				alt11=1;
			}
			switch (alt11) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:427:47: 'with' '(' p= exprList ')'
					{
					string_literal72=(Token)match(input,216,FOLLOW_216_in_importStatement970); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_216.add(string_literal72);

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

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

					}
					break;

			}

			// AST REWRITE
			// elements: r, l, p
			// token labels: r, l
			// rule labels: retval, p
			// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
			RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 427:74: -> ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:427:77: ^( IMPORT[$Import] $l ^( IMPORTAS ( $r)? ) ^( IMPORTPARAMS ( $p)? ) )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IMPORT, Import70), root_1);
				adaptor.addChild(root_1, stream_l.nextNode());
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:427:98: ^( 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:427:110: ( $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:427:114: ^( 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:427:130: ( $p)?
				if ( stream_p.hasNext() ) {
					adaptor.addChild(root_2, stream_p.nextTree());
				}
				stream_p.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:430: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 PortA75=null;
		Token PortA76=null;
		ParserRuleReturnScope l =null;
		ParserRuleReturnScope r =null;
		ParserRuleReturnScope expression77 =null;

		Object PortA75_tree=null;
		Object PortA76_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:431:3: (l= expression PortA r= expression -> ^( PORTF[$PortA] $l $r) | PortA expression -> ^( PORTR[$PortA] expression ) )
			int alt12=2;
			int LA12_0 = input.LA(1);
			if ( (LA12_0==All||(LA12_0 >= Any && LA12_0 <= Assert)||(LA12_0 >= AsyncCall && LA12_0 <= AsyncCallScript)||(LA12_0 >= AsyncStatus && LA12_0 <= B64Decompress)||LA12_0==Bool||(LA12_0 >= Call && LA12_0 <= Cast)||(LA12_0 >= Chain && LA12_0 <= Collate)||LA12_0==Copy||(LA12_0 >= Date && LA12_0 <= Debug)||(LA12_0 >= Defined && LA12_0 <= Difference)||(LA12_0 >= DottedIdentifier && LA12_0 <= DropWhile)||(LA12_0 >= Evals && LA12_0 <= Excl)||(LA12_0 >= File && LA12_0 <= Fold)||(LA12_0 >= Format && LA12_0 <= FromJson)||(LA12_0 >= GenSchema && LA12_0 <= HasCapability)||LA12_0==Identifier||(LA12_0 >= Integer && LA12_0 <= Json)||(LA12_0 >= KernelIdentifier && LA12_0 <= Keys)||(LA12_0 >= Lib && LA12_0 <= Long)||LA12_0==MD5||(LA12_0 >= MapFn && LA12_0 <= MkDir)||(LA12_0 >= New && LA12_0 <= OParen)||LA12_0==PackageIdentifier||LA12_0==Port||(LA12_0 >= Print && LA12_0 <= PropertyPlaceholder)||LA12_0==PutCache||LA12_0==QuotedString||(LA12_0 >= RPull && LA12_0 <= Replace)||LA12_0==Round||(LA12_0 >= Signal && LA12_0 <= Sort)||(LA12_0 >= Spawn && LA12_0 <= String)||(LA12_0 >= Subtract && LA12_0 <= SuspendWait)||(LA12_0 >= TakeWhile && LA12_0 <= Template)||(LA12_0 >= Time && LA12_0 <= Timer)||LA12_0==Transpose||LA12_0==TypeOf||(LA12_0 >= Unique && LA12_0 <= UrlEncode)||(LA12_0 >= Uuid && LA12_0 <= Wait)) ) {
				alt12=1;
			}
			else if ( (LA12_0==PortA) ) {
				alt12=2;
			}

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

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

					pushFollow(FOLLOW_expression_in_port1027);
					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: retval, r, l
					// 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);
					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);

					root_0 = (Object)adaptor.nil();
					// 431:39: -> ^( PORTF[$PortA] $l $r)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:431:42: ^( PORTF[$PortA] $l $r)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PORTF, PortA75), 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:432:6: PortA expression
					{
					PortA76=(Token)match(input,PortA,FOLLOW_PortA_in_port1048); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PortA.add(PortA76);

					pushFollow(FOLLOW_expression_in_port1050);
					expression77=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression77.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();
					// 432:39: -> ^( PORTR[$PortA] expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:432:42: ^( PORTR[$PortA] expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PORTR, PortA76), 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:435: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_literal79=null;
		Token Identifier80=null;
		Token char_literal81=null;
		Token char_literal83=null;
		Token string_literal85=null;
		Token Identifier86=null;
		Token Do87=null;
		Token End89=null;
		ParserRuleReturnScope expression78 =null;
		ParserRuleReturnScope block82 =null;
		ParserRuleReturnScope expression84 =null;
		ParserRuleReturnScope block88 =null;

		Object string_literal79_tree=null;
		Object Identifier80_tree=null;
		Object char_literal81_tree=null;
		Object char_literal83_tree=null;
		Object string_literal85_tree=null;
		Object Identifier86_tree=null;
		Object Do87_tree=null;
		Object End89_tree=null;
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Patch=new RewriteRuleTokenStream(adaptor,"token Patch");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		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:436:3: ( expression '<-->' Identifier '{' block '}' -> ^( PATCH[$Identifier] expression Identifier block ) | expression '<-->' Identifier Do block End -> ^( PATCH[$Identifier] expression Identifier block ) )
			int alt13=2;
			alt13 = dfa13.predict(input);
			switch (alt13) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:436:5: expression '<-->' Identifier '{' block '}'
					{
					pushFollow(FOLLOW_expression_in_patchStatement1088);
					expression78=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression78.getTree());
					string_literal79=(Token)match(input,Patch,FOLLOW_Patch_in_patchStatement1090); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Patch.add(string_literal79);

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

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

					pushFollow(FOLLOW_block_in_patchStatement1096);
					block82=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block82.getTree());
					char_literal83=(Token)match(input,CBrace,FOLLOW_CBrace_in_patchStatement1098); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal83);

					// AST REWRITE
					// elements: block, 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();
					// 436:48: -> ^( PATCH[$Identifier] expression Identifier block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:436:51: ^( PATCH[$Identifier] expression Identifier block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PATCH, Identifier80), 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:437:5: expression '<-->' Identifier Do block End
					{
					pushFollow(FOLLOW_expression_in_patchStatement1117);
					expression84=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression84.getTree());
					string_literal85=(Token)match(input,Patch,FOLLOW_Patch_in_patchStatement1119); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Patch.add(string_literal85);

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

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

					pushFollow(FOLLOW_block_in_patchStatement1125);
					block88=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block88.getTree());
					End89=(Token)match(input,End,FOLLOW_End_in_patchStatement1127); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End89);

					// 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();
					// 437:47: -> ^( PATCH[$Identifier] expression Identifier block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:437:50: ^( PATCH[$Identifier] expression Identifier block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PATCH, Identifier86), 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:440: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 Identifier90=null;
		Token string_literal91=null;
		ParserRuleReturnScope expression92 =null;

		Object Identifier90_tree=null;
		Object string_literal91_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:441:3: ( Identifier '<--' expression -> ^( PULL[$Identifier] Identifier expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:441:5: Identifier '<--' expression
			{
			Identifier90=(Token)match(input,Identifier,FOLLOW_Identifier_in_pull1153); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier90);

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

			pushFollow(FOLLOW_expression_in_pull1157);
			expression92=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression92.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();
			// 442:6: -> ^( PULL[$Identifier] Identifier expression )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:442:9: ^( PULL[$Identifier] Identifier expression )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PULL, Identifier90), 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:445: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 Identifier93=null;
		Token string_literal94=null;
		ParserRuleReturnScope expression95 =null;

		Object Identifier93_tree=null;
		Object string_literal94_tree=null;
		RewriteRuleTokenStream stream_202=new RewriteRuleTokenStream(adaptor,"token 202");
		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:446:3: ( Identifier '<<--' expression -> ^( METAPULL[$Identifier] Identifier expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:446:5: Identifier '<<--' expression
			{
			Identifier93=(Token)match(input,Identifier,FOLLOW_Identifier_in_metapull1186); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier93);

			string_literal94=(Token)match(input,202,FOLLOW_202_in_metapull1188); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_202.add(string_literal94);

			pushFollow(FOLLOW_expression_in_metapull1190);
			expression95=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression95.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();
			// 447:6: -> ^( METAPULL[$Identifier] Identifier expression )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:447:9: ^( METAPULL[$Identifier] Identifier expression )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(METAPULL, Identifier93), 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:450: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_literal96=null;
		ParserRuleReturnScope l =null;
		ParserRuleReturnScope r =null;

		Object string_literal96_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:451:3: (l= expression '-->' r= expression -> ^( PUSH[$l.start] $l $r) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:451:5: l= expression '-->' r= expression
			{
			pushFollow(FOLLOW_expression_in_push1221);
			l=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(l.getTree());
			string_literal96=(Token)match(input,PushVal,FOLLOW_PushVal_in_push1223); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_PushVal.add(string_literal96);

			pushFollow(FOLLOW_expression_in_push1227);
			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: retval, r, l
			// 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);
			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);

			root_0 = (Object)adaptor.nil();
			// 452:6: -> ^( PUSH[$l.start] $l $r)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:452: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:455: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 Throw97=null;
		ParserRuleReturnScope expression98 =null;

		Object Throw97_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:456:3: ( Throw expression -> ^( Throw expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:456:6: Throw expression
			{
			Throw97=(Token)match(input,Throw,FOLLOW_Throw_in_throwStatement1259); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Throw.add(Throw97);

			pushFollow(FOLLOW_expression_in_throwStatement1261);
			expression98=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression98.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();
			// 457:6: -> ^( Throw expression )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:457: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:459: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 PackageIdentifier99=null;
		Token char_literal100=null;
		Token char_literal102=null;
		Token Println103=null;
		Token char_literal104=null;
		Token char_literal106=null;
		Token Print107=null;
		Token char_literal108=null;
		Token char_literal110=null;
		Token Size111=null;
		Token char_literal112=null;
		Token char_literal114=null;
		Token Keys115=null;
		Token char_literal116=null;
		Token char_literal118=null;
		Token Sort119=null;
		Token char_literal120=null;
		Token char_literal121=null;
		Token char_literal122=null;
		Token Collate123=null;
		Token char_literal124=null;
		Token char_literal125=null;
		Token char_literal126=null;
		Token Date127=null;
		Token char_literal128=null;
		Token char_literal130=null;
		Token Time131=null;
		Token char_literal132=null;
		Token char_literal134=null;
		Token GetLine135=null;
		Token char_literal136=null;
		Token char_literal138=null;
		Token GetCh139=null;
		Token char_literal140=null;
		Token char_literal142=null;
		Token Capabilities143=null;
		Token char_literal144=null;
		Token char_literal145=null;
		Token HasCapability146=null;
		Token char_literal147=null;
		Token char_literal149=null;
		Token Cast150=null;
		Token char_literal151=null;
		Token char_literal152=null;
		Token char_literal153=null;
		Token Identifier154=null;
		Token char_literal155=null;
		Token char_literal157=null;
		Token DottedIdentifier158=null;
		Token char_literal159=null;
		Token char_literal161=null;
		ParserRuleReturnScope arg =null;
		ParserRuleReturnScope asc =null;
		ParserRuleReturnScope locale =null;
		ParserRuleReturnScope a =null;
		ParserRuleReturnScope b =null;
		ParserRuleReturnScope exprList101 =null;
		ParserRuleReturnScope expression105 =null;
		ParserRuleReturnScope expression109 =null;
		ParserRuleReturnScope expression113 =null;
		ParserRuleReturnScope expression117 =null;
		ParserRuleReturnScope exprList129 =null;
		ParserRuleReturnScope expression133 =null;
		ParserRuleReturnScope expression137 =null;
		ParserRuleReturnScope expression141 =null;
		ParserRuleReturnScope expression148 =null;
		ParserRuleReturnScope exprList156 =null;
		ParserRuleReturnScope exprList160 =null;
		ParserRuleReturnScope func2162 =null;

		Object PackageIdentifier99_tree=null;
		Object char_literal100_tree=null;
		Object char_literal102_tree=null;
		Object Println103_tree=null;
		Object char_literal104_tree=null;
		Object char_literal106_tree=null;
		Object Print107_tree=null;
		Object char_literal108_tree=null;
		Object char_literal110_tree=null;
		Object Size111_tree=null;
		Object char_literal112_tree=null;
		Object char_literal114_tree=null;
		Object Keys115_tree=null;
		Object char_literal116_tree=null;
		Object char_literal118_tree=null;
		Object Sort119_tree=null;
		Object char_literal120_tree=null;
		Object char_literal121_tree=null;
		Object char_literal122_tree=null;
		Object Collate123_tree=null;
		Object char_literal124_tree=null;
		Object char_literal125_tree=null;
		Object char_literal126_tree=null;
		Object Date127_tree=null;
		Object char_literal128_tree=null;
		Object char_literal130_tree=null;
		Object Time131_tree=null;
		Object char_literal132_tree=null;
		Object char_literal134_tree=null;
		Object GetLine135_tree=null;
		Object char_literal136_tree=null;
		Object char_literal138_tree=null;
		Object GetCh139_tree=null;
		Object char_literal140_tree=null;
		Object char_literal142_tree=null;
		Object Capabilities143_tree=null;
		Object char_literal144_tree=null;
		Object char_literal145_tree=null;
		Object HasCapability146_tree=null;
		Object char_literal147_tree=null;
		Object char_literal149_tree=null;
		Object Cast150_tree=null;
		Object char_literal151_tree=null;
		Object char_literal152_tree=null;
		Object char_literal153_tree=null;
		Object Identifier154_tree=null;
		Object char_literal155_tree=null;
		Object char_literal157_tree=null;
		Object DottedIdentifier158_tree=null;
		Object char_literal159_tree=null;
		Object char_literal161_tree=null;
		RewriteRuleTokenStream stream_Println=new RewriteRuleTokenStream(adaptor,"token Println");
		RewriteRuleTokenStream stream_Sort=new RewriteRuleTokenStream(adaptor,"token Sort");
		RewriteRuleTokenStream stream_Collate=new RewriteRuleTokenStream(adaptor,"token Collate");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleTokenStream stream_HasCapability=new RewriteRuleTokenStream(adaptor,"token HasCapability");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_DottedIdentifier=new RewriteRuleTokenStream(adaptor,"token DottedIdentifier");
		RewriteRuleTokenStream stream_PackageIdentifier=new RewriteRuleTokenStream(adaptor,"token PackageIdentifier");
		RewriteRuleTokenStream stream_Print=new RewriteRuleTokenStream(adaptor,"token Print");
		RewriteRuleTokenStream stream_Keys=new RewriteRuleTokenStream(adaptor,"token Keys");
		RewriteRuleTokenStream stream_GetCh=new RewriteRuleTokenStream(adaptor,"token GetCh");
		RewriteRuleTokenStream stream_Time=new RewriteRuleTokenStream(adaptor,"token Time");
		RewriteRuleTokenStream stream_Date=new RewriteRuleTokenStream(adaptor,"token Date");
		RewriteRuleTokenStream stream_GetLine=new RewriteRuleTokenStream(adaptor,"token GetLine");
		RewriteRuleTokenStream stream_Cast=new RewriteRuleTokenStream(adaptor,"token Cast");
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_Capabilities=new RewriteRuleTokenStream(adaptor,"token Capabilities");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_Size=new RewriteRuleTokenStream(adaptor,"token Size");
		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:460: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 alt22=17;
			switch ( input.LA(1) ) {
			case PackageIdentifier:
				{
				alt22=1;
				}
				break;
			case Println:
				{
				alt22=2;
				}
				break;
			case Print:
				{
				alt22=3;
				}
				break;
			case Size:
				{
				alt22=4;
				}
				break;
			case Keys:
				{
				alt22=5;
				}
				break;
			case Sort:
				{
				alt22=6;
				}
				break;
			case Collate:
				{
				alt22=7;
				}
				break;
			case Date:
				{
				alt22=8;
				}
				break;
			case Time:
				{
				alt22=9;
				}
				break;
			case GetLine:
				{
				alt22=10;
				}
				break;
			case GetCh:
				{
				alt22=11;
				}
				break;
			case Capabilities:
				{
				alt22=12;
				}
				break;
			case HasCapability:
				{
				alt22=13;
				}
				break;
			case Cast:
				{
				alt22=14;
				}
				break;
			case Identifier:
				{
				alt22=15;
				}
				break;
			case DottedIdentifier:
				{
				alt22=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:
				{
				alt22=17;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 22, 0, input);
				throw nvae;
			}
			switch (alt22) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:460:6: PackageIdentifier '(' ( exprList )? ')'
					{
					PackageIdentifier99=(Token)match(input,PackageIdentifier,FOLLOW_PackageIdentifier_in_functionCall1285); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PackageIdentifier.add(PackageIdentifier99);

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

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

					}

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

					// AST REWRITE
					// elements: PackageIdentifier, 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();
					// 460:42: -> ^( FUNC_CALL[$PackageIdentifier] PackageIdentifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:460:45: ^( FUNC_CALL[$PackageIdentifier] PackageIdentifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, PackageIdentifier99), root_1);
						adaptor.addChild(root_1, stream_PackageIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:460: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:461:6: Println '(' ( expression )? ')'
					{
					Println103=(Token)match(input,Println,FOLLOW_Println_in_functionCall1311); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Println.add(Println103);

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:461:18: ( expression )?
					int alt15=2;
					int LA15_0 = input.LA(1);
					if ( (LA15_0==All||(LA15_0 >= Any && LA15_0 <= Assert)||(LA15_0 >= AsyncCall && LA15_0 <= AsyncCallScript)||(LA15_0 >= AsyncStatus && LA15_0 <= B64Decompress)||LA15_0==Bool||(LA15_0 >= Call && 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 <= Json)||(LA15_0 >= KernelIdentifier && LA15_0 <= Keys)||(LA15_0 >= Lib && LA15_0 <= Long)||LA15_0==MD5||(LA15_0 >= MapFn && 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 <= 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 <= 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:461:18: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1315);
							expression105=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression105.getTree());
							}
							break;

					}

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

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

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

					pushFollow(FOLLOW_expression_in_functionCall1342);
					expression109=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression109.getTree());
					char_literal110=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1344); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal110);

					// 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();
					// 462:35: -> ^( FUNC_CALL[$Print] Print expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:462:38: ^( FUNC_CALL[$Print] Print expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Print107), 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:463:6: Size '(' expression ')'
					{
					Size111=(Token)match(input,Size,FOLLOW_Size_in_functionCall1366); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Size.add(Size111);

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

					pushFollow(FOLLOW_expression_in_functionCall1370);
					expression113=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression113.getTree());
					char_literal114=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1372); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal114);

					// AST REWRITE
					// elements: Size, 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();
					// 463:35: -> ^( FUNC_CALL[$Size] Size expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:463:38: ^( FUNC_CALL[$Size] Size expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Size111), 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:464:6: Keys '(' expression ')'
					{
					Keys115=(Token)match(input,Keys,FOLLOW_Keys_in_functionCall1395); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Keys.add(Keys115);

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

					pushFollow(FOLLOW_expression_in_functionCall1399);
					expression117=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression117.getTree());
					char_literal118=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1401); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal118);

					// AST REWRITE
					// elements: expression, Keys
					// 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:35: -> ^( FUNC_CALL[$Keys] Keys expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:464:38: ^( FUNC_CALL[$Keys] Keys expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Keys115), 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:465:6: Sort '(' arg= expression ',' asc= expression ')'
					{
					Sort119=(Token)match(input,Sort,FOLLOW_Sort_in_functionCall1424); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Sort.add(Sort119);

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

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

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

					// AST REWRITE
					// elements: arg, asc, Sort
					// token labels: 
					// rule labels: arg, retval, asc
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_asc=new RewriteRuleSubtreeStream(adaptor,"rule asc",asc!=null?asc.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 465:58: -> ^( FUNC_CALL[$Sort] Sort $arg $asc)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:465:61: ^( FUNC_CALL[$Sort] Sort $arg $asc)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Sort119), 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:466:6: Collate '(' arg= expression ',' locale= expression ')'
					{
					Collate123=(Token)match(input,Collate,FOLLOW_Collate_in_functionCall1465); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Collate.add(Collate123);

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

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

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

					// AST REWRITE
					// elements: locale, Collate, arg
					// token labels: 
					// rule labels: arg, retval, locale
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_locale=new RewriteRuleSubtreeStream(adaptor,"rule locale",locale!=null?locale.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 466:61: -> ^( FUNC_CALL[$Collate] Collate $arg $locale)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:466:64: ^( FUNC_CALL[$Collate] Collate $arg $locale)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Collate123), 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:467:6: Date '(' ( exprList )? ')'
					{
					Date127=(Token)match(input,Date,FOLLOW_Date_in_functionCall1503); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Date.add(Date127);

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:467:15: ( exprList )?
					int alt16=2;
					int LA16_0 = input.LA(1);
					if ( (LA16_0==All||(LA16_0 >= Any && LA16_0 <= Assert)||(LA16_0 >= AsyncCall && LA16_0 <= AsyncCallScript)||(LA16_0 >= AsyncStatus && LA16_0 <= B64Decompress)||LA16_0==Bool||(LA16_0 >= Call && 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 <= Json)||(LA16_0 >= KernelIdentifier && LA16_0 <= Keys)||(LA16_0 >= Lib && LA16_0 <= Long)||LA16_0==MD5||(LA16_0 >= MapFn && 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 <= 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 <= 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:467:15: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1507);
							exprList129=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList129.getTree());
							}
							break;

					}

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

					// 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();
					// 467:35: -> ^( FUNC_CALL[$Date] Date ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:467:38: ^( FUNC_CALL[$Date] Date ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Date127), root_1);
						adaptor.addChild(root_1, stream_Date.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:467: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:468:6: Time '(' ( expression )? ')'
					{
					Time131=(Token)match(input,Time,FOLLOW_Time_in_functionCall1535); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Time.add(Time131);

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:468:15: ( expression )?
					int alt17=2;
					int LA17_0 = input.LA(1);
					if ( (LA17_0==All||(LA17_0 >= Any && LA17_0 <= Assert)||(LA17_0 >= AsyncCall && LA17_0 <= AsyncCallScript)||(LA17_0 >= AsyncStatus && LA17_0 <= B64Decompress)||LA17_0==Bool||(LA17_0 >= Call && 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 <= Json)||(LA17_0 >= KernelIdentifier && LA17_0 <= Keys)||(LA17_0 >= Lib && LA17_0 <= Long)||LA17_0==MD5||(LA17_0 >= MapFn && 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 <= 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 <= 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:468:15: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1539);
							expression133=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression133.getTree());
							}
							break;

					}

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

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

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:469:18: ( expression )?
					int alt18=2;
					int LA18_0 = input.LA(1);
					if ( (LA18_0==All||(LA18_0 >= Any && LA18_0 <= Assert)||(LA18_0 >= AsyncCall && LA18_0 <= AsyncCallScript)||(LA18_0 >= AsyncStatus && LA18_0 <= B64Decompress)||LA18_0==Bool||(LA18_0 >= Call && 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 <= Json)||(LA18_0 >= KernelIdentifier && LA18_0 <= Keys)||(LA18_0 >= Lib && LA18_0 <= Long)||LA18_0==MD5||(LA18_0 >= MapFn && 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 <= 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 <= 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:469:18: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1569);
							expression137=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression137.getTree());
							}
							break;

					}

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

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

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:470:16: ( expression )?
					int alt19=2;
					int LA19_0 = input.LA(1);
					if ( (LA19_0==All||(LA19_0 >= Any && LA19_0 <= Assert)||(LA19_0 >= AsyncCall && LA19_0 <= AsyncCallScript)||(LA19_0 >= AsyncStatus && LA19_0 <= B64Decompress)||LA19_0==Bool||(LA19_0 >= Call && 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 <= Json)||(LA19_0 >= KernelIdentifier && LA19_0 <= Keys)||(LA19_0 >= Lib && LA19_0 <= Long)||LA19_0==MD5||(LA19_0 >= MapFn && 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 <= 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 <= 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:470:16: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1596);
							expression141=expression();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expression.add(expression141.getTree());
							}
							break;

					}

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

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

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

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

					// 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();
					// 471:31: -> ^( FUNC_CALL[$Capabilities] Capabilities )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:471:34: ^( FUNC_CALL[$Capabilities] Capabilities )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Capabilities143), 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:472:6: HasCapability '(' expression ')'
					{
					HasCapability146=(Token)match(input,HasCapability,FOLLOW_HasCapability_in_functionCall1645); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_HasCapability.add(HasCapability146);

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

					pushFollow(FOLLOW_expression_in_functionCall1649);
					expression148=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression148.getTree());
					char_literal149=(Token)match(input,CParen,FOLLOW_CParen_in_functionCall1651); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal149);

					// AST REWRITE
					// elements: expression, HasCapability
					// 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:39: -> ^( FUNC_CALL[$HasCapability] HasCapability expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:472:42: ^( FUNC_CALL[$HasCapability] HasCapability expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, HasCapability146), 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:473:6: Cast '(' a= expression ',' b= expression ')'
					{
					Cast150=(Token)match(input,Cast,FOLLOW_Cast_in_functionCall1669); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Cast.add(Cast150);

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

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

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

					// AST REWRITE
					// elements: b, Cast, a
					// token labels: 
					// rule labels: retval, b, a
					// 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);
					RewriteRuleSubtreeStream stream_b=new RewriteRuleSubtreeStream(adaptor,"rule b",b!=null?b.getTree():null);
					RewriteRuleSubtreeStream stream_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 473:53: -> ^( FUNC_CALL[$Cast] Cast $a $b)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:473:56: ^( FUNC_CALL[$Cast] Cast $a $b)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Cast150), 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:474:6: Identifier '(' ( exprList )? ')'
					{
					Identifier154=(Token)match(input,Identifier,FOLLOW_Identifier_in_functionCall1709); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier154);

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:21: ( exprList )?
					int alt20=2;
					int LA20_0 = input.LA(1);
					if ( (LA20_0==All||(LA20_0 >= Any && LA20_0 <= Assert)||(LA20_0 >= AsyncCall && LA20_0 <= AsyncCallScript)||(LA20_0 >= AsyncStatus && LA20_0 <= B64Decompress)||LA20_0==Bool||(LA20_0 >= Call && 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 <= Json)||(LA20_0 >= KernelIdentifier && LA20_0 <= Keys)||(LA20_0 >= Lib && LA20_0 <= Long)||LA20_0==MD5||(LA20_0 >= MapFn && 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 <= 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 <= 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:21: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1713);
							exprList156=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList156.getTree());
							}
							break;

					}

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

					// 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();
					// 474:35: -> ^( FUNC_CALL[$Identifier] Identifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474:38: ^( FUNC_CALL[$Identifier] Identifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Identifier154), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:474: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:475:6: DottedIdentifier '(' ( exprList )? ')'
					{
					DottedIdentifier158=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_functionCall1735); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DottedIdentifier.add(DottedIdentifier158);

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

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:475:27: ( exprList )?
					int alt21=2;
					int LA21_0 = input.LA(1);
					if ( (LA21_0==All||(LA21_0 >= Any && LA21_0 <= Assert)||(LA21_0 >= AsyncCall && LA21_0 <= AsyncCallScript)||(LA21_0 >= AsyncStatus && LA21_0 <= B64Decompress)||LA21_0==Bool||(LA21_0 >= Call && 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 <= Json)||(LA21_0 >= KernelIdentifier && LA21_0 <= Keys)||(LA21_0 >= Lib && LA21_0 <= Long)||LA21_0==MD5||(LA21_0 >= MapFn && 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 <= 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 <= 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:475:27: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1739);
							exprList160=exprList();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_exprList.add(exprList160.getTree());
							}
							break;

					}

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

					// AST REWRITE
					// elements: DottedIdentifier, 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();
					// 476:35: -> ^( DottedIdentifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:476:38: ^( DottedIdentifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(token("QUALIFIED_FUNC_CALL", QUALIFIED_FUNC_CALL, DottedIdentifier158.getLine()), root_1);
						adaptor.addChild(root_1, stream_DottedIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:476: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:477:5: func2
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_func2_in_functionCall1793);
					func2162=func2();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, func2162.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:480:1: func2 : ( TypeOf '(' expression ')' -> ^( FUNC_CALL[$TypeOf] TypeOf expression ) | Assert '(' expression ')' -> ^( FUNC_CALL[$Assert] Assert expression ) | 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 ) | 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 TypeOf163=null;
		Token char_literal164=null;
		Token char_literal166=null;
		Token Assert167=null;
		Token char_literal168=null;
		Token char_literal170=null;
		Token Replace171=null;
		Token char_literal172=null;
		Token char_literal173=null;
		Token char_literal174=null;
		Token char_literal175=null;
		Token RPull176=null;
		Token char_literal177=null;
		Token char_literal178=null;
		Token RPush179=null;
		Token char_literal180=null;
		Token char_literal181=null;
		Token char_literal182=null;
		Token char_literal183=null;
		Token Transpose184=null;
		Token char_literal185=null;
		Token char_literal187=null;
		Token B64Compress188=null;
		Token char_literal189=null;
		Token char_literal191=null;
		Token B64Decompress192=null;
		Token char_literal193=null;
		Token char_literal195=null;
		Token Debug196=null;
		Token char_literal197=null;
		Token char_literal199=null;
		Token Evals200=null;
		Token char_literal201=null;
		Token char_literal203=null;
		Token ReadDir204=null;
		Token char_literal205=null;
		Token char_literal207=null;
		Token MkDir208=null;
		Token char_literal209=null;
		Token char_literal211=null;
		Token IsFile212=null;
		Token char_literal213=null;
		Token char_literal215=null;
		Token IsFolder216=null;
		Token char_literal217=null;
		Token char_literal219=null;
		Token File220=null;
		Token char_literal221=null;
		Token char_literal223=null;
		Token Delete224=null;
		Token char_literal225=null;
		Token char_literal227=null;
		Token Archive228=null;
		Token char_literal229=null;
		Token char_literal231=null;
		Token Port232=null;
		Token char_literal233=null;
		Token char_literal235=null;
		Token Suspend236=null;
		Token char_literal237=null;
		Token char_literal239=null;
		Token Difference240=null;
		Token char_literal241=null;
		Token char_literal243=null;
		Token Remove244=null;
		Token char_literal245=null;
		Token Identifier246=null;
		Token char_literal247=null;
		Token char_literal248=null;
		Token Join249=null;
		Token char_literal250=null;
		Token char_literal252=null;
		Token Unique253=null;
		Token char_literal254=null;
		Token char_literal256=null;
		Token Copy257=null;
		Token char_literal258=null;
		Token char_literal259=null;
		Token char_literal260=null;
		Token Close261=null;
		Token char_literal262=null;
		Token char_literal264=null;
		Token Timer265=null;
		Token char_literal266=null;
		Token char_literal268=null;
		Token Vars269=null;
		Token char_literal270=null;
		Token char_literal271=null;
		Token MergeIf272=null;
		Token char_literal273=null;
		Token char_literal275=null;
		Token Format276=null;
		Token char_literal277=null;
		Token char_literal279=null;
		Token Merge280=null;
		Token char_literal281=null;
		Token char_literal283=null;
		Token Message284=null;
		Token char_literal285=null;
		Token char_literal286=null;
		Token char_literal287=null;
		Token PutCache288=null;
		Token char_literal289=null;
		Token char_literal290=null;
		Token char_literal291=null;
		Token char_literal292=null;
		Token GetCache293=null;
		Token char_literal294=null;
		Token char_literal295=null;
		Token Json296=null;
		Token char_literal297=null;
		Token char_literal299=null;
		Token FromJson300=null;
		Token char_literal301=null;
		Token char_literal303=null;
		Token UrlEncode304=null;
		Token char_literal305=null;
		Token char_literal307=null;
		Token UrlDecode308=null;
		Token char_literal309=null;
		Token char_literal311=null;
		Token MD5312=null;
		Token char_literal313=null;
		Token char_literal315=null;
		Token MapFn316=null;
		Token char_literal317=null;
		Token Identifier318=null;
		Token char_literal319=null;
		Token char_literal321=null;
		Token FilterFn322=null;
		Token char_literal323=null;
		Token Identifier324=null;
		Token char_literal325=null;
		Token char_literal327=null;
		Token Fold328=null;
		Token char_literal329=null;
		Token Identifier330=null;
		Token char_literal331=null;
		Token char_literal333=null;
		Token char_literal335=null;
		Token Any336=null;
		Token char_literal337=null;
		Token Identifier338=null;
		Token char_literal339=null;
		Token char_literal341=null;
		Token All342=null;
		Token char_literal343=null;
		Token Identifier344=null;
		Token char_literal345=null;
		Token char_literal347=null;
		Token TakeWhile348=null;
		Token char_literal349=null;
		Token Identifier350=null;
		Token char_literal351=null;
		Token char_literal353=null;
		Token DropWhile354=null;
		Token char_literal355=null;
		Token Identifier356=null;
		Token char_literal357=null;
		Token char_literal359=null;
		Token SplitWith360=null;
		Token char_literal361=null;
		Token Identifier362=null;
		Token char_literal363=null;
		Token char_literal365=null;
		Token Split366=null;
		Token char_literal367=null;
		Token char_literal368=null;
		Token char_literal369=null;
		Token char_literal370=null;
		Token Uuid371=null;
		Token char_literal372=null;
		Token char_literal373=null;
		Token AsyncCall374=null;
		Token char_literal375=null;
		Token char_literal376=null;
		Token char_literal377=null;
		Token AsyncCallScript378=null;
		Token char_literal379=null;
		Token char_literal380=null;
		Token char_literal381=null;
		Token char_literal382=null;
		Token AsyncStatus383=null;
		Token char_literal384=null;
		Token char_literal386=null;
		Token SuspendWait387=null;
		Token char_literal388=null;
		Token char_literal390=null;
		Token Wait391=null;
		Token char_literal392=null;
		Token char_literal393=null;
		Token char_literal394=null;
		Token char_literal395=null;
		Token Chain396=null;
		Token char_literal397=null;
		Token char_literal398=null;
		Token char_literal399=null;
		Token Signal400=null;
		Token char_literal401=null;
		Token char_literal402=null;
		Token char_literal403=null;
		Token Sleep404=null;
		Token char_literal405=null;
		Token char_literal407=null;
		Token Matches408=null;
		Token char_literal409=null;
		Token char_literal410=null;
		Token char_literal411=null;
		Token Rand412=null;
		Token char_literal413=null;
		Token char_literal415=null;
		Token Spawn416=null;
		Token char_literal417=null;
		Token char_literal418=null;
		Token char_literal419=null;
		Token char_literal420=null;
		Token Defined421=null;
		Token char_literal422=null;
		Token Identifier423=null;
		Token char_literal424=null;
		Token Round425=null;
		Token char_literal426=null;
		Token char_literal427=null;
		Token char_literal428=null;
		Token Lib429=null;
		Token char_literal430=null;
		Token char_literal432=null;
		Token Call433=null;
		Token char_literal434=null;
		Token char_literal435=null;
		Token char_literal436=null;
		Token char_literal437=null;
		Token New438=null;
		Token char_literal439=null;
		Token char_literal440=null;
		Token GenSchema441=null;
		Token char_literal442=null;
		Token char_literal443=null;
		Token GenStruct444=null;
		Token char_literal445=null;
		Token Identifier446=null;
		Token char_literal447=null;
		Token char_literal448=null;
		Token Template449=null;
		Token char_literal450=null;
		Token char_literal451=null;
		Token char_literal452=null;
		Token KernelIdentifier453=null;
		Token char_literal454=null;
		Token char_literal456=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 exp =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 expression165 =null;
		ParserRuleReturnScope expression169 =null;
		ParserRuleReturnScope expression186 =null;
		ParserRuleReturnScope expression190 =null;
		ParserRuleReturnScope expression194 =null;
		ParserRuleReturnScope expression198 =null;
		ParserRuleReturnScope expression202 =null;
		ParserRuleReturnScope expression206 =null;
		ParserRuleReturnScope expression210 =null;
		ParserRuleReturnScope expression214 =null;
		ParserRuleReturnScope expression218 =null;
		ParserRuleReturnScope exprList222 =null;
		ParserRuleReturnScope expression226 =null;
		ParserRuleReturnScope expression230 =null;
		ParserRuleReturnScope expression234 =null;
		ParserRuleReturnScope expression238 =null;
		ParserRuleReturnScope exprList242 =null;
		ParserRuleReturnScope exprList251 =null;
		ParserRuleReturnScope exprList255 =null;
		ParserRuleReturnScope expression263 =null;
		ParserRuleReturnScope expression267 =null;
		ParserRuleReturnScope exprList274 =null;
		ParserRuleReturnScope exprList278 =null;
		ParserRuleReturnScope exprList282 =null;
		ParserRuleReturnScope expression298 =null;
		ParserRuleReturnScope expression302 =null;
		ParserRuleReturnScope expression306 =null;
		ParserRuleReturnScope expression310 =null;
		ParserRuleReturnScope expression314 =null;
		ParserRuleReturnScope expression320 =null;
		ParserRuleReturnScope expression326 =null;
		ParserRuleReturnScope expression332 =null;
		ParserRuleReturnScope expression334 =null;
		ParserRuleReturnScope expression340 =null;
		ParserRuleReturnScope expression346 =null;
		ParserRuleReturnScope expression352 =null;
		ParserRuleReturnScope expression358 =null;
		ParserRuleReturnScope expression364 =null;
		ParserRuleReturnScope expression385 =null;
		ParserRuleReturnScope exprList389 =null;
		ParserRuleReturnScope expression406 =null;
		ParserRuleReturnScope expression414 =null;
		ParserRuleReturnScope expression431 =null;
		ParserRuleReturnScope exprList455 =null;

		Object TypeOf163_tree=null;
		Object char_literal164_tree=null;
		Object char_literal166_tree=null;
		Object Assert167_tree=null;
		Object char_literal168_tree=null;
		Object char_literal170_tree=null;
		Object Replace171_tree=null;
		Object char_literal172_tree=null;
		Object char_literal173_tree=null;
		Object char_literal174_tree=null;
		Object char_literal175_tree=null;
		Object RPull176_tree=null;
		Object char_literal177_tree=null;
		Object char_literal178_tree=null;
		Object RPush179_tree=null;
		Object char_literal180_tree=null;
		Object char_literal181_tree=null;
		Object char_literal182_tree=null;
		Object char_literal183_tree=null;
		Object Transpose184_tree=null;
		Object char_literal185_tree=null;
		Object char_literal187_tree=null;
		Object B64Compress188_tree=null;
		Object char_literal189_tree=null;
		Object char_literal191_tree=null;
		Object B64Decompress192_tree=null;
		Object char_literal193_tree=null;
		Object char_literal195_tree=null;
		Object Debug196_tree=null;
		Object char_literal197_tree=null;
		Object char_literal199_tree=null;
		Object Evals200_tree=null;
		Object char_literal201_tree=null;
		Object char_literal203_tree=null;
		Object ReadDir204_tree=null;
		Object char_literal205_tree=null;
		Object char_literal207_tree=null;
		Object MkDir208_tree=null;
		Object char_literal209_tree=null;
		Object char_literal211_tree=null;
		Object IsFile212_tree=null;
		Object char_literal213_tree=null;
		Object char_literal215_tree=null;
		Object IsFolder216_tree=null;
		Object char_literal217_tree=null;
		Object char_literal219_tree=null;
		Object File220_tree=null;
		Object char_literal221_tree=null;
		Object char_literal223_tree=null;
		Object Delete224_tree=null;
		Object char_literal225_tree=null;
		Object char_literal227_tree=null;
		Object Archive228_tree=null;
		Object char_literal229_tree=null;
		Object char_literal231_tree=null;
		Object Port232_tree=null;
		Object char_literal233_tree=null;
		Object char_literal235_tree=null;
		Object Suspend236_tree=null;
		Object char_literal237_tree=null;
		Object char_literal239_tree=null;
		Object Difference240_tree=null;
		Object char_literal241_tree=null;
		Object char_literal243_tree=null;
		Object Remove244_tree=null;
		Object char_literal245_tree=null;
		Object Identifier246_tree=null;
		Object char_literal247_tree=null;
		Object char_literal248_tree=null;
		Object Join249_tree=null;
		Object char_literal250_tree=null;
		Object char_literal252_tree=null;
		Object Unique253_tree=null;
		Object char_literal254_tree=null;
		Object char_literal256_tree=null;
		Object Copy257_tree=null;
		Object char_literal258_tree=null;
		Object char_literal259_tree=null;
		Object char_literal260_tree=null;
		Object Close261_tree=null;
		Object char_literal262_tree=null;
		Object char_literal264_tree=null;
		Object Timer265_tree=null;
		Object char_literal266_tree=null;
		Object char_literal268_tree=null;
		Object Vars269_tree=null;
		Object char_literal270_tree=null;
		Object char_literal271_tree=null;
		Object MergeIf272_tree=null;
		Object char_literal273_tree=null;
		Object char_literal275_tree=null;
		Object Format276_tree=null;
		Object char_literal277_tree=null;
		Object char_literal279_tree=null;
		Object Merge280_tree=null;
		Object char_literal281_tree=null;
		Object char_literal283_tree=null;
		Object Message284_tree=null;
		Object char_literal285_tree=null;
		Object char_literal286_tree=null;
		Object char_literal287_tree=null;
		Object PutCache288_tree=null;
		Object char_literal289_tree=null;
		Object char_literal290_tree=null;
		Object char_literal291_tree=null;
		Object char_literal292_tree=null;
		Object GetCache293_tree=null;
		Object char_literal294_tree=null;
		Object char_literal295_tree=null;
		Object Json296_tree=null;
		Object char_literal297_tree=null;
		Object char_literal299_tree=null;
		Object FromJson300_tree=null;
		Object char_literal301_tree=null;
		Object char_literal303_tree=null;
		Object UrlEncode304_tree=null;
		Object char_literal305_tree=null;
		Object char_literal307_tree=null;
		Object UrlDecode308_tree=null;
		Object char_literal309_tree=null;
		Object char_literal311_tree=null;
		Object MD5312_tree=null;
		Object char_literal313_tree=null;
		Object char_literal315_tree=null;
		Object MapFn316_tree=null;
		Object char_literal317_tree=null;
		Object Identifier318_tree=null;
		Object char_literal319_tree=null;
		Object char_literal321_tree=null;
		Object FilterFn322_tree=null;
		Object char_literal323_tree=null;
		Object Identifier324_tree=null;
		Object char_literal325_tree=null;
		Object char_literal327_tree=null;
		Object Fold328_tree=null;
		Object char_literal329_tree=null;
		Object Identifier330_tree=null;
		Object char_literal331_tree=null;
		Object char_literal333_tree=null;
		Object char_literal335_tree=null;
		Object Any336_tree=null;
		Object char_literal337_tree=null;
		Object Identifier338_tree=null;
		Object char_literal339_tree=null;
		Object char_literal341_tree=null;
		Object All342_tree=null;
		Object char_literal343_tree=null;
		Object Identifier344_tree=null;
		Object char_literal345_tree=null;
		Object char_literal347_tree=null;
		Object TakeWhile348_tree=null;
		Object char_literal349_tree=null;
		Object Identifier350_tree=null;
		Object char_literal351_tree=null;
		Object char_literal353_tree=null;
		Object DropWhile354_tree=null;
		Object char_literal355_tree=null;
		Object Identifier356_tree=null;
		Object char_literal357_tree=null;
		Object char_literal359_tree=null;
		Object SplitWith360_tree=null;
		Object char_literal361_tree=null;
		Object Identifier362_tree=null;
		Object char_literal363_tree=null;
		Object char_literal365_tree=null;
		Object Split366_tree=null;
		Object char_literal367_tree=null;
		Object char_literal368_tree=null;
		Object char_literal369_tree=null;
		Object char_literal370_tree=null;
		Object Uuid371_tree=null;
		Object char_literal372_tree=null;
		Object char_literal373_tree=null;
		Object AsyncCall374_tree=null;
		Object char_literal375_tree=null;
		Object char_literal376_tree=null;
		Object char_literal377_tree=null;
		Object AsyncCallScript378_tree=null;
		Object char_literal379_tree=null;
		Object char_literal380_tree=null;
		Object char_literal381_tree=null;
		Object char_literal382_tree=null;
		Object AsyncStatus383_tree=null;
		Object char_literal384_tree=null;
		Object char_literal386_tree=null;
		Object SuspendWait387_tree=null;
		Object char_literal388_tree=null;
		Object char_literal390_tree=null;
		Object Wait391_tree=null;
		Object char_literal392_tree=null;
		Object char_literal393_tree=null;
		Object char_literal394_tree=null;
		Object char_literal395_tree=null;
		Object Chain396_tree=null;
		Object char_literal397_tree=null;
		Object char_literal398_tree=null;
		Object char_literal399_tree=null;
		Object Signal400_tree=null;
		Object char_literal401_tree=null;
		Object char_literal402_tree=null;
		Object char_literal403_tree=null;
		Object Sleep404_tree=null;
		Object char_literal405_tree=null;
		Object char_literal407_tree=null;
		Object Matches408_tree=null;
		Object char_literal409_tree=null;
		Object char_literal410_tree=null;
		Object char_literal411_tree=null;
		Object Rand412_tree=null;
		Object char_literal413_tree=null;
		Object char_literal415_tree=null;
		Object Spawn416_tree=null;
		Object char_literal417_tree=null;
		Object char_literal418_tree=null;
		Object char_literal419_tree=null;
		Object char_literal420_tree=null;
		Object Defined421_tree=null;
		Object char_literal422_tree=null;
		Object Identifier423_tree=null;
		Object char_literal424_tree=null;
		Object Round425_tree=null;
		Object char_literal426_tree=null;
		Object char_literal427_tree=null;
		Object char_literal428_tree=null;
		Object Lib429_tree=null;
		Object char_literal430_tree=null;
		Object char_literal432_tree=null;
		Object Call433_tree=null;
		Object char_literal434_tree=null;
		Object char_literal435_tree=null;
		Object char_literal436_tree=null;
		Object char_literal437_tree=null;
		Object New438_tree=null;
		Object char_literal439_tree=null;
		Object char_literal440_tree=null;
		Object GenSchema441_tree=null;
		Object char_literal442_tree=null;
		Object char_literal443_tree=null;
		Object GenStruct444_tree=null;
		Object char_literal445_tree=null;
		Object Identifier446_tree=null;
		Object char_literal447_tree=null;
		Object char_literal448_tree=null;
		Object Template449_tree=null;
		Object char_literal450_tree=null;
		Object char_literal451_tree=null;
		Object char_literal452_tree=null;
		Object KernelIdentifier453_tree=null;
		Object char_literal454_tree=null;
		Object char_literal456_tree=null;
		RewriteRuleTokenStream stream_Format=new RewriteRuleTokenStream(adaptor,"token Format");
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleTokenStream stream_Lib=new RewriteRuleTokenStream(adaptor,"token Lib");
		RewriteRuleTokenStream stream_SplitWith=new RewriteRuleTokenStream(adaptor,"token SplitWith");
		RewriteRuleTokenStream stream_Unique=new RewriteRuleTokenStream(adaptor,"token Unique");
		RewriteRuleTokenStream stream_SuspendWait=new RewriteRuleTokenStream(adaptor,"token SuspendWait");
		RewriteRuleTokenStream stream_All=new RewriteRuleTokenStream(adaptor,"token All");
		RewriteRuleTokenStream stream_Assert=new RewriteRuleTokenStream(adaptor,"token Assert");
		RewriteRuleTokenStream stream_Rand=new RewriteRuleTokenStream(adaptor,"token Rand");
		RewriteRuleTokenStream stream_Evals=new RewriteRuleTokenStream(adaptor,"token Evals");
		RewriteRuleTokenStream stream_GenSchema=new RewriteRuleTokenStream(adaptor,"token GenSchema");
		RewriteRuleTokenStream stream_RPull=new RewriteRuleTokenStream(adaptor,"token RPull");
		RewriteRuleTokenStream stream_AsyncCall=new RewriteRuleTokenStream(adaptor,"token AsyncCall");
		RewriteRuleTokenStream stream_RPush=new RewriteRuleTokenStream(adaptor,"token RPush");
		RewriteRuleTokenStream stream_Delete=new RewriteRuleTokenStream(adaptor,"token Delete");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_Fold=new RewriteRuleTokenStream(adaptor,"token Fold");
		RewriteRuleTokenStream stream_Matches=new RewriteRuleTokenStream(adaptor,"token Matches");
		RewriteRuleTokenStream stream_Spawn=new RewriteRuleTokenStream(adaptor,"token Spawn");
		RewriteRuleTokenStream stream_Signal=new RewriteRuleTokenStream(adaptor,"token Signal");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_Call=new RewriteRuleTokenStream(adaptor,"token Call");
		RewriteRuleTokenStream stream_Transpose=new RewriteRuleTokenStream(adaptor,"token Transpose");
		RewriteRuleTokenStream stream_MD5=new RewriteRuleTokenStream(adaptor,"token MD5");
		RewriteRuleTokenStream stream_Chain=new RewriteRuleTokenStream(adaptor,"token Chain");
		RewriteRuleTokenStream stream_UrlDecode=new RewriteRuleTokenStream(adaptor,"token UrlDecode");
		RewriteRuleTokenStream stream_TakeWhile=new RewriteRuleTokenStream(adaptor,"token TakeWhile");
		RewriteRuleTokenStream stream_KernelIdentifier=new RewriteRuleTokenStream(adaptor,"token KernelIdentifier");
		RewriteRuleTokenStream stream_B64Decompress=new RewriteRuleTokenStream(adaptor,"token B64Decompress");
		RewriteRuleTokenStream stream_Port=new RewriteRuleTokenStream(adaptor,"token Port");
		RewriteRuleTokenStream stream_B64Compress=new RewriteRuleTokenStream(adaptor,"token B64Compress");
		RewriteRuleTokenStream stream_FilterFn=new RewriteRuleTokenStream(adaptor,"token FilterFn");
		RewriteRuleTokenStream stream_FromJson=new RewriteRuleTokenStream(adaptor,"token FromJson");
		RewriteRuleTokenStream stream_MkDir=new RewriteRuleTokenStream(adaptor,"token MkDir");
		RewriteRuleTokenStream stream_Uuid=new RewriteRuleTokenStream(adaptor,"token Uuid");
		RewriteRuleTokenStream stream_PutCache=new RewriteRuleTokenStream(adaptor,"token PutCache");
		RewriteRuleTokenStream stream_Any=new RewriteRuleTokenStream(adaptor,"token Any");
		RewriteRuleTokenStream stream_Json=new RewriteRuleTokenStream(adaptor,"token Json");
		RewriteRuleTokenStream stream_UrlEncode=new RewriteRuleTokenStream(adaptor,"token UrlEncode");
		RewriteRuleTokenStream stream_IsFolder=new RewriteRuleTokenStream(adaptor,"token IsFolder");
		RewriteRuleTokenStream stream_Copy=new RewriteRuleTokenStream(adaptor,"token Copy");
		RewriteRuleTokenStream stream_ReadDir=new RewriteRuleTokenStream(adaptor,"token ReadDir");
		RewriteRuleTokenStream stream_AsyncCallScript=new RewriteRuleTokenStream(adaptor,"token AsyncCallScript");
		RewriteRuleTokenStream stream_DropWhile=new RewriteRuleTokenStream(adaptor,"token DropWhile");
		RewriteRuleTokenStream stream_Close=new RewriteRuleTokenStream(adaptor,"token Close");
		RewriteRuleTokenStream stream_MergeIf=new RewriteRuleTokenStream(adaptor,"token MergeIf");
		RewriteRuleTokenStream stream_Suspend=new RewriteRuleTokenStream(adaptor,"token Suspend");
		RewriteRuleTokenStream stream_Defined=new RewriteRuleTokenStream(adaptor,"token Defined");
		RewriteRuleTokenStream stream_Merge=new RewriteRuleTokenStream(adaptor,"token Merge");
		RewriteRuleTokenStream stream_Remove=new RewriteRuleTokenStream(adaptor,"token Remove");
		RewriteRuleTokenStream stream_TypeOf=new RewriteRuleTokenStream(adaptor,"token TypeOf");
		RewriteRuleTokenStream stream_Archive=new RewriteRuleTokenStream(adaptor,"token Archive");
		RewriteRuleTokenStream stream_Template=new RewriteRuleTokenStream(adaptor,"token Template");
		RewriteRuleTokenStream stream_Message=new RewriteRuleTokenStream(adaptor,"token Message");
		RewriteRuleTokenStream stream_File=new RewriteRuleTokenStream(adaptor,"token File");
		RewriteRuleTokenStream stream_GetCache=new RewriteRuleTokenStream(adaptor,"token GetCache");
		RewriteRuleTokenStream stream_Round=new RewriteRuleTokenStream(adaptor,"token Round");
		RewriteRuleTokenStream stream_New=new RewriteRuleTokenStream(adaptor,"token New");
		RewriteRuleTokenStream stream_GenStruct=new RewriteRuleTokenStream(adaptor,"token GenStruct");
		RewriteRuleTokenStream stream_Timer=new RewriteRuleTokenStream(adaptor,"token Timer");
		RewriteRuleTokenStream stream_Vars=new RewriteRuleTokenStream(adaptor,"token Vars");
		RewriteRuleTokenStream stream_Debug=new RewriteRuleTokenStream(adaptor,"token Debug");
		RewriteRuleTokenStream stream_Join=new RewriteRuleTokenStream(adaptor,"token Join");
		RewriteRuleTokenStream stream_Replace=new RewriteRuleTokenStream(adaptor,"token Replace");
		RewriteRuleTokenStream stream_MapFn=new RewriteRuleTokenStream(adaptor,"token MapFn");
		RewriteRuleTokenStream stream_Split=new RewriteRuleTokenStream(adaptor,"token Split");
		RewriteRuleTokenStream stream_Difference=new RewriteRuleTokenStream(adaptor,"token Difference");
		RewriteRuleTokenStream stream_Sleep=new RewriteRuleTokenStream(adaptor,"token Sleep");
		RewriteRuleTokenStream stream_Wait=new RewriteRuleTokenStream(adaptor,"token Wait");
		RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
		RewriteRuleTokenStream stream_IsFile=new RewriteRuleTokenStream(adaptor,"token IsFile");
		RewriteRuleTokenStream stream_AsyncStatus=new RewriteRuleTokenStream(adaptor,"token AsyncStatus");
		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:481:3: ( TypeOf '(' expression ')' -> ^( FUNC_CALL[$TypeOf] TypeOf expression ) | Assert '(' expression ')' -> ^( FUNC_CALL[$Assert] Assert expression ) | 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 ) | 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 alt33=68;
			switch ( input.LA(1) ) {
			case TypeOf:
				{
				alt33=1;
				}
				break;
			case Assert:
				{
				alt33=2;
				}
				break;
			case Replace:
				{
				alt33=3;
				}
				break;
			case RPull:
				{
				alt33=4;
				}
				break;
			case RPush:
				{
				alt33=5;
				}
				break;
			case Transpose:
				{
				alt33=6;
				}
				break;
			case B64Compress:
				{
				alt33=7;
				}
				break;
			case B64Decompress:
				{
				alt33=8;
				}
				break;
			case Debug:
				{
				alt33=9;
				}
				break;
			case Evals:
				{
				alt33=10;
				}
				break;
			case ReadDir:
				{
				alt33=11;
				}
				break;
			case MkDir:
				{
				alt33=12;
				}
				break;
			case IsFile:
				{
				alt33=13;
				}
				break;
			case IsFolder:
				{
				alt33=14;
				}
				break;
			case File:
				{
				alt33=15;
				}
				break;
			case Delete:
				{
				alt33=16;
				}
				break;
			case Archive:
				{
				alt33=17;
				}
				break;
			case Port:
				{
				alt33=18;
				}
				break;
			case Suspend:
				{
				alt33=19;
				}
				break;
			case Difference:
				{
				alt33=20;
				}
				break;
			case Remove:
				{
				alt33=21;
				}
				break;
			case Join:
				{
				alt33=22;
				}
				break;
			case Unique:
				{
				alt33=23;
				}
				break;
			case Copy:
				{
				alt33=24;
				}
				break;
			case Close:
				{
				alt33=25;
				}
				break;
			case Timer:
				{
				alt33=26;
				}
				break;
			case Vars:
				{
				alt33=27;
				}
				break;
			case MergeIf:
				{
				alt33=28;
				}
				break;
			case Format:
				{
				alt33=29;
				}
				break;
			case Merge:
				{
				alt33=30;
				}
				break;
			case Message:
				{
				alt33=31;
				}
				break;
			case PutCache:
				{
				alt33=32;
				}
				break;
			case GetCache:
				{
				alt33=33;
				}
				break;
			case Json:
				{
				alt33=34;
				}
				break;
			case FromJson:
				{
				alt33=35;
				}
				break;
			case UrlEncode:
				{
				alt33=36;
				}
				break;
			case UrlDecode:
				{
				alt33=37;
				}
				break;
			case MD5:
				{
				alt33=38;
				}
				break;
			case MapFn:
				{
				alt33=39;
				}
				break;
			case FilterFn:
				{
				alt33=40;
				}
				break;
			case Fold:
				{
				alt33=41;
				}
				break;
			case Any:
				{
				alt33=42;
				}
				break;
			case All:
				{
				alt33=43;
				}
				break;
			case TakeWhile:
				{
				alt33=44;
				}
				break;
			case DropWhile:
				{
				alt33=45;
				}
				break;
			case SplitWith:
				{
				alt33=46;
				}
				break;
			case Split:
				{
				alt33=47;
				}
				break;
			case Uuid:
				{
				alt33=48;
				}
				break;
			case AsyncCall:
				{
				alt33=49;
				}
				break;
			case AsyncCallScript:
				{
				alt33=50;
				}
				break;
			case AsyncStatus:
				{
				alt33=51;
				}
				break;
			case SuspendWait:
				{
				alt33=52;
				}
				break;
			case Wait:
				{
				alt33=53;
				}
				break;
			case Chain:
				{
				alt33=54;
				}
				break;
			case Signal:
				{
				alt33=55;
				}
				break;
			case Sleep:
				{
				alt33=56;
				}
				break;
			case Matches:
				{
				alt33=57;
				}
				break;
			case Rand:
				{
				alt33=58;
				}
				break;
			case Spawn:
				{
				alt33=59;
				}
				break;
			case Defined:
				{
				alt33=60;
				}
				break;
			case Round:
				{
				alt33=61;
				}
				break;
			case Lib:
				{
				alt33=62;
				}
				break;
			case Call:
				{
				alt33=63;
				}
				break;
			case New:
				{
				alt33=64;
				}
				break;
			case GenSchema:
				{
				alt33=65;
				}
				break;
			case GenStruct:
				{
				alt33=66;
				}
				break;
			case Template:
				{
				alt33=67;
				}
				break;
			case KernelIdentifier:
				{
				alt33=68;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 33, 0, input);
				throw nvae;
			}
			switch (alt33) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:481:6: TypeOf '(' expression ')'
					{
					TypeOf163=(Token)match(input,TypeOf,FOLLOW_TypeOf_in_func21807); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TypeOf.add(TypeOf163);

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

					pushFollow(FOLLOW_expression_in_func21811);
					expression165=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression165.getTree());
					char_literal166=(Token)match(input,CParen,FOLLOW_CParen_in_func21813); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal166);

					// AST REWRITE
					// elements: TypeOf, 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();
					// 481:35: -> ^( FUNC_CALL[$TypeOf] TypeOf expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:481:38: ^( FUNC_CALL[$TypeOf] TypeOf expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, TypeOf163), 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:482:6: Assert '(' expression ')'
					{
					Assert167=(Token)match(input,Assert,FOLLOW_Assert_in_func21834); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Assert.add(Assert167);

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

					pushFollow(FOLLOW_expression_in_func21838);
					expression169=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression169.getTree());
					char_literal170=(Token)match(input,CParen,FOLLOW_CParen_in_func21840); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal170);

					// AST REWRITE
					// elements: Assert, 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();
					// 482:35: -> ^( FUNC_CALL[$Assert] Assert expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:482:38: ^( FUNC_CALL[$Assert] Assert expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Assert167), root_1);
						adaptor.addChild(root_1, stream_Assert.nextNode());
						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:483:6: Replace '(' v= expression ',' s= expression ',' t= expression ')'
					{
					Replace171=(Token)match(input,Replace,FOLLOW_Replace_in_func21861); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Replace.add(Replace171);

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

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

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

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

					// AST REWRITE
					// elements: Replace, t, v, s
					// token labels: 
					// rule labels: v, retval, t, s
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_t=new RewriteRuleSubtreeStream(adaptor,"rule t",t!=null?t.getTree():null);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 483:69: -> ^( FUNC_CALL[$Replace] Replace $v $s $t)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:483:72: ^( FUNC_CALL[$Replace] Replace $v $s $t)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Replace171), 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 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:484:6: RPull '(' u= expression ')'
					{
					RPull176=(Token)match(input,RPull,FOLLOW_RPull_in_func21906); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPull.add(RPull176);

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

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

					// AST REWRITE
					// elements: u, RPull
					// token labels: 
					// rule labels: retval, u
					// 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);
					RewriteRuleSubtreeStream stream_u=new RewriteRuleSubtreeStream(adaptor,"rule u",u!=null?u.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 484:33: -> ^( FUNC_CALL[$RPull] RPull $u)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:484:36: ^( FUNC_CALL[$RPull] RPull $u)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, RPull176), 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 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:485:6: RPush '(' u= expression ',' v= expression ( ',' o= expression )? ')'
					{
					RPush179=(Token)match(input,RPush,FOLLOW_RPush_in_func21933); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPush.add(RPush179);

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

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

					pushFollow(FOLLOW_expression_in_func21945);
					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:485:46: ( ',' o= expression )?
					int alt23=2;
					int LA23_0 = input.LA(1);
					if ( (LA23_0==Comma) ) {
						alt23=1;
					}
					switch (alt23) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:485:47: ',' o= expression
							{
							char_literal182=(Token)match(input,Comma,FOLLOW_Comma_in_func21948); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal182);

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

					}

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

					// AST REWRITE
					// elements: o, u, v, RPush
					// token labels: 
					// rule labels: v, retval, u, o
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_u=new RewriteRuleSubtreeStream(adaptor,"rule u",u!=null?u.getTree():null);
					RewriteRuleSubtreeStream stream_o=new RewriteRuleSubtreeStream(adaptor,"rule o",o!=null?o.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 485:69: -> ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:485:72: ^( FUNC_CALL[$RPush] RPush $u $v ( $o)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, RPush179), 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:485: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 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:486:6: Transpose '(' expression ')'
					{
					Transpose184=(Token)match(input,Transpose,FOLLOW_Transpose_in_func21981); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Transpose.add(Transpose184);

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

					pushFollow(FOLLOW_expression_in_func21985);
					expression186=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression186.getTree());
					char_literal187=(Token)match(input,CParen,FOLLOW_CParen_in_func21987); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal187);

					// 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();
					// 486:35: -> ^( FUNC_CALL[$Transpose] Transpose expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:486:38: ^( FUNC_CALL[$Transpose] Transpose expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Transpose184), 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 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:487:6: B64Compress '(' expression ')'
					{
					B64Compress188=(Token)match(input,B64Compress,FOLLOW_B64Compress_in_func22005); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_B64Compress.add(B64Compress188);

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

					pushFollow(FOLLOW_expression_in_func22009);
					expression190=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression190.getTree());
					char_literal191=(Token)match(input,CParen,FOLLOW_CParen_in_func22011); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal191);

					// 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();
					// 487:37: -> ^( FUNC_CALL[$B64Compress] B64Compress expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:487:40: ^( FUNC_CALL[$B64Compress] B64Compress expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, B64Compress188), 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 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:488:6: B64Decompress '(' expression ')'
					{
					B64Decompress192=(Token)match(input,B64Decompress,FOLLOW_B64Decompress_in_func22029); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_B64Decompress.add(B64Decompress192);

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

					pushFollow(FOLLOW_expression_in_func22033);
					expression194=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression194.getTree());
					char_literal195=(Token)match(input,CParen,FOLLOW_CParen_in_func22035); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal195);

					// AST REWRITE
					// elements: expression, B64Decompress
					// 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();
					// 488:39: -> ^( FUNC_CALL[$B64Decompress] B64Decompress expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:488:42: ^( FUNC_CALL[$B64Decompress] B64Decompress expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, B64Decompress192), 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 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:489:6: Debug '(' expression ')'
					{
					Debug196=(Token)match(input,Debug,FOLLOW_Debug_in_func22053); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Debug.add(Debug196);

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

					pushFollow(FOLLOW_expression_in_func22057);
					expression198=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression198.getTree());
					char_literal199=(Token)match(input,CParen,FOLLOW_CParen_in_func22059); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal199);

					// 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();
					// 489:35: -> ^( FUNC_CALL[$Debug] Debug expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:489:38: ^( FUNC_CALL[$Debug] Debug expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Debug196), 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 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:6: Evals '(' expression ')'
					{
					Evals200=(Token)match(input,Evals,FOLLOW_Evals_in_func22081); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Evals.add(Evals200);

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

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

					// 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();
					// 490:35: -> ^( FUNC_CALL[$Evals] Evals expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:490:38: ^( FUNC_CALL[$Evals] Evals expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Evals200), 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 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:491:6: ReadDir '(' expression ')'
					{
					ReadDir204=(Token)match(input,ReadDir,FOLLOW_ReadDir_in_func22109); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ReadDir.add(ReadDir204);

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

					pushFollow(FOLLOW_expression_in_func22113);
					expression206=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression206.getTree());
					char_literal207=(Token)match(input,CParen,FOLLOW_CParen_in_func22115); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal207);

					// AST REWRITE
					// elements: ReadDir, 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[$ReadDir] ReadDir expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:491:38: ^( FUNC_CALL[$ReadDir] ReadDir expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, ReadDir204), 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 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:492:6: MkDir '(' expression ')'
					{
					MkDir208=(Token)match(input,MkDir,FOLLOW_MkDir_in_func22135); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MkDir.add(MkDir208);

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

					pushFollow(FOLLOW_expression_in_func22139);
					expression210=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression210.getTree());
					char_literal211=(Token)match(input,CParen,FOLLOW_CParen_in_func22141); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal211);

					// AST REWRITE
					// elements: MkDir, 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();
					// 492:35: -> ^( FUNC_CALL[$MkDir] MkDir expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:492:38: ^( FUNC_CALL[$MkDir] MkDir expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MkDir208), 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 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:493:6: IsFile '(' expression ')'
					{
					IsFile212=(Token)match(input,IsFile,FOLLOW_IsFile_in_func22163); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IsFile.add(IsFile212);

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

					pushFollow(FOLLOW_expression_in_func22167);
					expression214=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression214.getTree());
					char_literal215=(Token)match(input,CParen,FOLLOW_CParen_in_func22169); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal215);

					// AST REWRITE
					// elements: IsFile, 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:35: -> ^( FUNC_CALL[$IsFile] IsFile expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:493:38: ^( FUNC_CALL[$IsFile] IsFile expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, IsFile212), 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 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:494:6: IsFolder '(' expression ')'
					{
					IsFolder216=(Token)match(input,IsFolder,FOLLOW_IsFolder_in_func22190); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IsFolder.add(IsFolder216);

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

					pushFollow(FOLLOW_expression_in_func22194);
					expression218=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression218.getTree());
					char_literal219=(Token)match(input,CParen,FOLLOW_CParen_in_func22196); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal219);

					// 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();
					// 494:35: -> ^( FUNC_CALL[$IsFolder] IsFolder expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:494:38: ^( FUNC_CALL[$IsFolder] IsFolder expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, IsFolder216), 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 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:495:6: File '(' exprList ')'
					{
					File220=(Token)match(input,File,FOLLOW_File_in_func22215); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_File.add(File220);

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

					pushFollow(FOLLOW_exprList_in_func22219);
					exprList222=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList222.getTree());
					char_literal223=(Token)match(input,CParen,FOLLOW_CParen_in_func22221); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal223);

					// AST REWRITE
					// elements: File, 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();
					// 495:35: -> ^( FUNC_CALL[$File] File exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:495:38: ^( FUNC_CALL[$File] File exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, File220), 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 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:496:6: Delete '(' expression ')'
					{
					Delete224=(Token)match(input,Delete,FOLLOW_Delete_in_func22246); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Delete.add(Delete224);

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

					pushFollow(FOLLOW_expression_in_func22250);
					expression226=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression226.getTree());
					char_literal227=(Token)match(input,CParen,FOLLOW_CParen_in_func22252); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal227);

					// AST REWRITE
					// elements: expression, Delete
					// 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[$Delete] Delete expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:496:38: ^( FUNC_CALL[$Delete] Delete expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Delete224), 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 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:497:6: Archive '(' expression ')'
					{
					Archive228=(Token)match(input,Archive,FOLLOW_Archive_in_func22273); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Archive.add(Archive228);

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

					pushFollow(FOLLOW_expression_in_func22277);
					expression230=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression230.getTree());
					char_literal231=(Token)match(input,CParen,FOLLOW_CParen_in_func22279); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal231);

					// AST REWRITE
					// elements: expression, Archive
					// 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[$Archive] Archive expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:497:38: ^( FUNC_CALL[$Archive] Archive expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Archive228), 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 18 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:498:6: Port '(' expression ')'
					{
					Port232=(Token)match(input,Port,FOLLOW_Port_in_func22299); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Port.add(Port232);

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

					pushFollow(FOLLOW_expression_in_func22303);
					expression234=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression234.getTree());
					char_literal235=(Token)match(input,CParen,FOLLOW_CParen_in_func22305); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal235);

					// AST REWRITE
					// elements: expression, 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();
					// 498:35: -> ^( FUNC_CALL[$Port] Port expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:498:38: ^( FUNC_CALL[$Port] Port expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Port232), 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 19 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:499:6: Suspend '(' expression ')'
					{
					Suspend236=(Token)match(input,Suspend,FOLLOW_Suspend_in_func22328); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Suspend.add(Suspend236);

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

					pushFollow(FOLLOW_expression_in_func22332);
					expression238=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression238.getTree());
					char_literal239=(Token)match(input,CParen,FOLLOW_CParen_in_func22334); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal239);

					// 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();
					// 499:35: -> ^( FUNC_CALL[$Suspend] Suspend expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:499:38: ^( FUNC_CALL[$Suspend] Suspend expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Suspend236), 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 20 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:500:6: Difference '(' exprList ')'
					{
					Difference240=(Token)match(input,Difference,FOLLOW_Difference_in_func22354); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Difference.add(Difference240);

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

					pushFollow(FOLLOW_exprList_in_func22358);
					exprList242=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList242.getTree());
					char_literal243=(Token)match(input,CParen,FOLLOW_CParen_in_func22360); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal243);

					// AST REWRITE
					// elements: exprList, Difference
					// 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[$Difference] Difference exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:500:38: ^( FUNC_CALL[$Difference] Difference exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Difference240), 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 21 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:501:6: Remove '(' Identifier ',' k= expression ')'
					{
					Remove244=(Token)match(input,Remove,FOLLOW_Remove_in_func22379); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Remove.add(Remove244);

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

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

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

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

					// AST REWRITE
					// elements: Identifier, k, Remove
					// token labels: 
					// rule labels: retval, k
					// 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);
					RewriteRuleSubtreeStream stream_k=new RewriteRuleSubtreeStream(adaptor,"rule k",k!=null?k.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 501:49: -> ^( FUNC_CALL[$Remove] Remove Identifier $k)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:501:52: ^( FUNC_CALL[$Remove] Remove Identifier $k)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Remove244), 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 22 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:502:6: Join '(' exprList ')'
					{
					Join249=(Token)match(input,Join,FOLLOW_Join_in_func22412); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Join.add(Join249);

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

					pushFollow(FOLLOW_exprList_in_func22416);
					exprList251=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList251.getTree());
					char_literal252=(Token)match(input,CParen,FOLLOW_CParen_in_func22418); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal252);

					// AST REWRITE
					// elements: exprList, Join
					// 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[$Join] Join exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:502:38: ^( FUNC_CALL[$Join] Join exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Join249), 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 23 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:503:6: Unique '(' exprList ')'
					{
					Unique253=(Token)match(input,Unique,FOLLOW_Unique_in_func22443); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Unique.add(Unique253);

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

					pushFollow(FOLLOW_exprList_in_func22447);
					exprList255=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList255.getTree());
					char_literal256=(Token)match(input,CParen,FOLLOW_CParen_in_func22449); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal256);

					// 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();
					// 503:35: -> ^( FUNC_CALL[$Unique] Unique exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:503:38: ^( FUNC_CALL[$Unique] Unique exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Unique253), 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 24 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:504:6: Copy '(' s= expression ',' t= expression ')'
					{
					Copy257=(Token)match(input,Copy,FOLLOW_Copy_in_func22472); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Copy.add(Copy257);

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

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

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

					// AST REWRITE
					// elements: t, s, Copy
					// token labels: 
					// rule labels: retval, t, s
					// 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);
					RewriteRuleSubtreeStream stream_t=new RewriteRuleSubtreeStream(adaptor,"rule t",t!=null?t.getTree():null);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 504:49: -> ^( FUNC_CALL[$Copy] Copy $s $t)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:504:52: ^( FUNC_CALL[$Copy] Copy $s $t)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Copy257), 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 25 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:505:6: Close '(' expression ')'
					{
					Close261=(Token)match(input,Close,FOLLOW_Close_in_func22508); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Close.add(Close261);

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

					pushFollow(FOLLOW_expression_in_func22512);
					expression263=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression263.getTree());
					char_literal264=(Token)match(input,CParen,FOLLOW_CParen_in_func22514); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal264);

					// 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();
					// 505:35: -> ^( FUNC_CALL[$Close] Close expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:505:38: ^( FUNC_CALL[$Close] Close expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Close261), 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 26 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:506:6: Timer '(' ( expression )? ')'
					{
					Timer265=(Token)match(input,Timer,FOLLOW_Timer_in_func22536); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Timer.add(Timer265);

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

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

					}

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

					// 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();
					// 506:36: -> ^( FUNC_CALL[$Timer] Timer ( expression )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:506:39: ^( FUNC_CALL[$Timer] Timer ( expression )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Timer265), root_1);
						adaptor.addChild(root_1, stream_Timer.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:506: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 27 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:507:6: Vars '(' ')'
					{
					Vars269=(Token)match(input,Vars,FOLLOW_Vars_in_func22566); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Vars.add(Vars269);

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

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

					// 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();
					// 507:38: -> ^( FUNC_CALL[$Vars] Vars )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:507:41: ^( FUNC_CALL[$Vars] Vars )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Vars269), root_1);
						adaptor.addChild(root_1, stream_Vars.nextNode());
						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:508:6: MergeIf '(' exprList ')'
					{
					MergeIf272=(Token)match(input,MergeIf,FOLLOW_MergeIf_in_func22605); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MergeIf.add(MergeIf272);

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

					pushFollow(FOLLOW_exprList_in_func22609);
					exprList274=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList274.getTree());
					char_literal275=(Token)match(input,CParen,FOLLOW_CParen_in_func22611); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal275);

					// AST REWRITE
					// elements: MergeIf, 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[$MergeIf] MergeIf exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:508:38: ^( FUNC_CALL[$MergeIf] MergeIf exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MergeIf272), 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 29 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:509:6: Format '(' exprList ')'
					{
					Format276=(Token)match(input,Format,FOLLOW_Format_in_func22633); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Format.add(Format276);

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

					pushFollow(FOLLOW_exprList_in_func22637);
					exprList278=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList278.getTree());
					char_literal279=(Token)match(input,CParen,FOLLOW_CParen_in_func22639); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal279);

					// AST REWRITE
					// elements: Format, 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();
					// 509:30: -> ^( FUNC_CALL[$Format] Format exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:509:33: ^( FUNC_CALL[$Format] Format exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Format276), 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 30 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:510:6: Merge '(' exprList ')'
					{
					Merge280=(Token)match(input,Merge,FOLLOW_Merge_in_func22657); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Merge.add(Merge280);

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

					pushFollow(FOLLOW_exprList_in_func22661);
					exprList282=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList282.getTree());
					char_literal283=(Token)match(input,CParen,FOLLOW_CParen_in_func22663); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal283);

					// AST REWRITE
					// elements: Merge, 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();
					// 510:35: -> ^( FUNC_CALL[$Merge] Merge exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:510:38: ^( FUNC_CALL[$Merge] Merge exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Merge280), 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 31 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:6: Message '(' a= expression ',' m= expression ')'
					{
					Message284=(Token)match(input,Message,FOLLOW_Message_in_func22687); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Message.add(Message284);

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

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

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

					// AST REWRITE
					// elements: Message, a, m
					// token labels: 
					// rule labels: retval, a, m
					// 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);
					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);

					root_0 = (Object)adaptor.nil();
					// 511:52: -> ^( FUNC_CALL[$Message] Message $a $m)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:511:55: ^( FUNC_CALL[$Message] Message $a $m)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Message284), 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 32 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:512:6: PutCache '(' v= expression ',' n= expression ( ',' exp= expression )? ')'
					{
					PutCache288=(Token)match(input,PutCache,FOLLOW_PutCache_in_func22723); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PutCache.add(PutCache288);

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

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

					pushFollow(FOLLOW_expression_in_func22735);
					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:512:49: ( ',' exp= expression )?
					int alt25=2;
					int LA25_0 = input.LA(1);
					if ( (LA25_0==Comma) ) {
						alt25=1;
					}
					switch (alt25) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:512:50: ',' exp= expression
							{
							char_literal291=(Token)match(input,Comma,FOLLOW_Comma_in_func22738); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal291);

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

					}

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

					// AST REWRITE
					// elements: exp, v, n, PutCache
					// token labels: 
					// rule labels: v, exp, retval, n
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_n=new RewriteRuleSubtreeStream(adaptor,"rule n",n!=null?n.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 512:75: -> ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:512:78: ^( FUNC_CALL[$PutCache] PutCache $v $n ( $exp)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, PutCache288), 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:512: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 33 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:513:6: GetCache '(' n= expression ')'
					{
					GetCache293=(Token)match(input,GetCache,FOLLOW_GetCache_in_func22772); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GetCache.add(GetCache293);

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

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

					// AST REWRITE
					// elements: GetCache, n
					// token labels: 
					// rule labels: retval, n
					// 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);
					RewriteRuleSubtreeStream stream_n=new RewriteRuleSubtreeStream(adaptor,"rule n",n!=null?n.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 513:36: -> ^( FUNC_CALL[$GetCache] GetCache $n)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:513:39: ^( FUNC_CALL[$GetCache] GetCache $n)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GetCache293), 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 34 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:514:6: Json '(' expression ')'
					{
					Json296=(Token)match(input,Json,FOLLOW_Json_in_func22799); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Json.add(Json296);

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

					pushFollow(FOLLOW_expression_in_func22803);
					expression298=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression298.getTree());
					char_literal299=(Token)match(input,CParen,FOLLOW_CParen_in_func22805); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal299);

					// 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();
					// 514:35: -> ^( FUNC_CALL[$Json] Json expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:514:38: ^( FUNC_CALL[$Json] Json expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Json296), 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 35 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:516:6: FromJson '(' expression ')'
					{
					FromJson300=(Token)match(input,FromJson,FOLLOW_FromJson_in_func22829); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FromJson.add(FromJson300);

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

					pushFollow(FOLLOW_expression_in_func22833);
					expression302=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression302.getTree());
					char_literal303=(Token)match(input,CParen,FOLLOW_CParen_in_func22835); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal303);

					// 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();
					// 516:35: -> ^( FUNC_CALL[$FromJson] FromJson expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:516:38: ^( FUNC_CALL[$FromJson] FromJson expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, FromJson300), 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 36 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:6: UrlEncode '(' expression ')'
					{
					UrlEncode304=(Token)match(input,UrlEncode,FOLLOW_UrlEncode_in_func22854); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UrlEncode.add(UrlEncode304);

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

					pushFollow(FOLLOW_expression_in_func22858);
					expression306=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression306.getTree());
					char_literal307=(Token)match(input,CParen,FOLLOW_CParen_in_func22860); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal307);

					// AST REWRITE
					// elements: UrlEncode, 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();
					// 517:36: -> ^( FUNC_CALL[$UrlEncode] UrlEncode expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:517:39: ^( FUNC_CALL[$UrlEncode] UrlEncode expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, UrlEncode304), 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 37 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:518:6: UrlDecode '(' expression ')'
					{
					UrlDecode308=(Token)match(input,UrlDecode,FOLLOW_UrlDecode_in_func22879); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_UrlDecode.add(UrlDecode308);

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

					pushFollow(FOLLOW_expression_in_func22883);
					expression310=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression310.getTree());
					char_literal311=(Token)match(input,CParen,FOLLOW_CParen_in_func22885); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal311);

					// 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();
					// 518:36: -> ^( FUNC_CALL[$UrlDecode] UrlDecode expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:518:39: ^( FUNC_CALL[$UrlDecode] UrlDecode expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, UrlDecode308), 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 38 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:519:6: MD5 '(' expression ')'
					{
					MD5312=(Token)match(input,MD5,FOLLOW_MD5_in_func22904); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MD5.add(MD5312);

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

					pushFollow(FOLLOW_expression_in_func22908);
					expression314=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression314.getTree());
					char_literal315=(Token)match(input,CParen,FOLLOW_CParen_in_func22910); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal315);

					// 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();
					// 519:35: -> ^( FUNC_CALL[$MD5] MD5 expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:519:38: ^( FUNC_CALL[$MD5] MD5 expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MD5312), 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 39 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:520:6: MapFn '(' Identifier ',' expression ')'
					{
					MapFn316=(Token)match(input,MapFn,FOLLOW_MapFn_in_func22934); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MapFn.add(MapFn316);

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

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

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

					pushFollow(FOLLOW_expression_in_func22942);
					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_func22944); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal321);

					// 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();
					// 520:46: -> ^( FUNC_CALL[$MapFn] MapFn Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:520:49: ^( FUNC_CALL[$MapFn] MapFn Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, MapFn316), 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 40 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:521:6: FilterFn '(' Identifier ',' expression ')'
					{
					FilterFn322=(Token)match(input,FilterFn,FOLLOW_FilterFn_in_func22964); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FilterFn.add(FilterFn322);

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

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

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

					pushFollow(FOLLOW_expression_in_func22972);
					expression326=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression326.getTree());
					char_literal327=(Token)match(input,CParen,FOLLOW_CParen_in_func22974); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal327);

					// 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();
					// 521:49: -> ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:521:52: ^( FUNC_CALL[$FilterFn] FilterFn Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, FilterFn322), 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 41 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:522:6: Fold '(' Identifier ',' expression ',' expression ')'
					{
					Fold328=(Token)match(input,Fold,FOLLOW_Fold_in_func22994); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Fold.add(Fold328);

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

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

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

					pushFollow(FOLLOW_expression_in_func23002);
					expression332=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression332.getTree());
					char_literal333=(Token)match(input,Comma,FOLLOW_Comma_in_func23004); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal333);

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

					// AST REWRITE
					// elements: expression, Fold, 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();
					// 522:60: -> ^( FUNC_CALL[$Fold] Fold Identifier expression expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:522:63: ^( FUNC_CALL[$Fold] Fold Identifier expression expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Fold328), 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 42 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:523:6: Any '(' Identifier ',' expression ')'
					{
					Any336=(Token)match(input,Any,FOLLOW_Any_in_func23030); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Any.add(Any336);

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

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

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

					pushFollow(FOLLOW_expression_in_func23038);
					expression340=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression340.getTree());
					char_literal341=(Token)match(input,CParen,FOLLOW_CParen_in_func23040); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal341);

					// AST REWRITE
					// elements: expression, Identifier, Any
					// 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:44: -> ^( FUNC_CALL[$Any] Any Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:523:47: ^( FUNC_CALL[$Any] Any Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Any336), 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 43 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:524:6: All '(' Identifier ',' expression ')'
					{
					All342=(Token)match(input,All,FOLLOW_All_in_func23060); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_All.add(All342);

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

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

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

					pushFollow(FOLLOW_expression_in_func23068);
					expression346=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression346.getTree());
					char_literal347=(Token)match(input,CParen,FOLLOW_CParen_in_func23070); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal347);

					// 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();
					// 524:44: -> ^( FUNC_CALL[$All] All Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:524:47: ^( FUNC_CALL[$All] All Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, All342), 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 44 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:525:6: TakeWhile '(' Identifier ',' expression ')'
					{
					TakeWhile348=(Token)match(input,TakeWhile,FOLLOW_TakeWhile_in_func23090); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TakeWhile.add(TakeWhile348);

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

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

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

					pushFollow(FOLLOW_expression_in_func23098);
					expression352=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression352.getTree());
					char_literal353=(Token)match(input,CParen,FOLLOW_CParen_in_func23100); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal353);

					// AST REWRITE
					// elements: Identifier, TakeWhile, 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();
					// 525:50: -> ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:525:53: ^( FUNC_CALL[$TakeWhile] TakeWhile Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, TakeWhile348), 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 45 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:526:6: DropWhile '(' Identifier ',' expression ')'
					{
					DropWhile354=(Token)match(input,DropWhile,FOLLOW_DropWhile_in_func23120); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DropWhile.add(DropWhile354);

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

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

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

					pushFollow(FOLLOW_expression_in_func23128);
					expression358=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression358.getTree());
					char_literal359=(Token)match(input,CParen,FOLLOW_CParen_in_func23130); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal359);

					// AST REWRITE
					// elements: Identifier, expression, DropWhile
					// 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:50: -> ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:526:53: ^( FUNC_CALL[$DropWhile] DropWhile Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, DropWhile354), 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 46 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:527:6: SplitWith '(' Identifier ',' expression ')'
					{
					SplitWith360=(Token)match(input,SplitWith,FOLLOW_SplitWith_in_func23150); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SplitWith.add(SplitWith360);

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

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

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

					pushFollow(FOLLOW_expression_in_func23158);
					expression364=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression364.getTree());
					char_literal365=(Token)match(input,CParen,FOLLOW_CParen_in_func23160); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal365);

					// AST REWRITE
					// elements: expression, SplitWith, 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();
					// 527:50: -> ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:527:53: ^( FUNC_CALL[$SplitWith] SplitWith Identifier expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, SplitWith360), 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 47 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:528:6: Split '(' str= expression ',' sep= expression ',' quoter= expression ')'
					{
					Split366=(Token)match(input,Split,FOLLOW_Split_in_func23180); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Split.add(Split366);

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

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

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

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

					// AST REWRITE
					// elements: sep, quoter, Split, str
					// token labels: 
					// rule labels: retval, str, quoter, sep
					// 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);
					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_sep=new RewriteRuleSubtreeStream(adaptor,"rule sep",sep!=null?sep.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 528:76: -> ^( FUNC_CALL[$Split] Split $str $sep $quoter)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:528:79: ^( FUNC_CALL[$Split] Split $str $sep $quoter)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Split366), 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 48 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:529:6: Uuid '(' ')'
					{
					Uuid371=(Token)match(input,Uuid,FOLLOW_Uuid_in_func23225); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Uuid.add(Uuid371);

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

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

					// 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();
					// 529:35: -> ^( FUNC_CALL[$Uuid] Uuid )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:529:38: ^( FUNC_CALL[$Uuid] Uuid )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Uuid371), root_1);
						adaptor.addChild(root_1, stream_Uuid.nextNode());
						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:530:6: AsyncCall '(' s= expression ( ',' p= expression )? ')'
					{
					AsyncCall374=(Token)match(input,AsyncCall,FOLLOW_AsyncCall_in_func23261); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AsyncCall.add(AsyncCall374);

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

					pushFollow(FOLLOW_expression_in_func23267);
					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:530:33: ( ',' p= 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:530:34: ',' p= expression
							{
							char_literal376=(Token)match(input,Comma,FOLLOW_Comma_in_func23270); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal376);

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

					}

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

					// AST REWRITE
					// elements: AsyncCall, p, s
					// token labels: 
					// rule labels: retval, s, p
					// 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);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);
					RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 531:35: -> ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:531:38: ^( FUNC_CALL[$AsyncCall] AsyncCall $s ( $p)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, AsyncCall374), 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:531: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 50 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:532:6: AsyncCallScript '(' r= expression ',' s= expression ( ',' p= expression )? ')'
					{
					AsyncCallScript378=(Token)match(input,AsyncCallScript,FOLLOW_AsyncCallScript_in_func23335); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AsyncCallScript.add(AsyncCallScript378);

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

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

					pushFollow(FOLLOW_expression_in_func23347);
					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:532:56: ( ',' 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:532:57: ',' p= expression
							{
							char_literal381=(Token)match(input,Comma,FOLLOW_Comma_in_func23350); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal381);

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

					}

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

					// AST REWRITE
					// elements: AsyncCallScript, p, s, r
					// token labels: 
					// rule labels: retval, s, r, p
					// 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);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);
					RewriteRuleSubtreeStream stream_r=new RewriteRuleSubtreeStream(adaptor,"rule r",r!=null?r.getTree():null);
					RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 533:35: -> ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:533:38: ^( FUNC_CALL[$AsyncCallScript] AsyncCallScript $r $s ( $p)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, AsyncCallScript378), 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:533: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 51 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:534:6: AsyncStatus '(' expression ')'
					{
					AsyncStatus383=(Token)match(input,AsyncStatus,FOLLOW_AsyncStatus_in_func23418); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AsyncStatus.add(AsyncStatus383);

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

					pushFollow(FOLLOW_expression_in_func23422);
					expression385=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression385.getTree());
					char_literal386=(Token)match(input,CParen,FOLLOW_CParen_in_func23424); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal386);

					// 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();
					// 534:44: -> ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:534:47: ^( FUNC_CALL[$AsyncStatus] AsyncStatus expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, AsyncStatus383), 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 52 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:535:6: SuspendWait '(' exprList ')'
					{
					SuspendWait387=(Token)match(input,SuspendWait,FOLLOW_SuspendWait_in_func23449); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SuspendWait.add(SuspendWait387);

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

					pushFollow(FOLLOW_exprList_in_func23453);
					exprList389=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList389.getTree());
					char_literal390=(Token)match(input,CParen,FOLLOW_CParen_in_func23455); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal390);

					// AST REWRITE
					// elements: exprList, SuspendWait
					// 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();
					// 535:36: -> ^( FUNC_CALL[$SuspendWait] SuspendWait exprList )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:535:39: ^( FUNC_CALL[$SuspendWait] SuspendWait exprList )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, SuspendWait387), 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 53 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:536:6: Wait '(' d= expression ( ',' in= expression ',' re= expression )? ')'
					{
					Wait391=(Token)match(input,Wait,FOLLOW_Wait_in_func23474); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Wait.add(Wait391);

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

					pushFollow(FOLLOW_expression_in_func23480);
					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:536:28: ( ',' in= expression ',' re= 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:536:29: ',' in= expression ',' re= expression
							{
							char_literal393=(Token)match(input,Comma,FOLLOW_Comma_in_func23483); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal393);

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

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

					}

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

					// AST REWRITE
					// elements: d, in, re, Wait
					// token labels: 
					// rule labels: retval, d, re, in
					// 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);
					RewriteRuleSubtreeStream stream_d=new RewriteRuleSubtreeStream(adaptor,"rule d",d!=null?d.getTree():null);
					RewriteRuleSubtreeStream stream_re=new RewriteRuleSubtreeStream(adaptor,"rule re",re!=null?re.getTree():null);
					RewriteRuleSubtreeStream stream_in=new RewriteRuleSubtreeStream(adaptor,"rule in",in!=null?in.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 537:35: -> ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:537:38: ^( FUNC_CALL[$Wait] Wait $d ( $in)? ( $re)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Wait391), 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:537: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:537: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 54 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:538:6: Chain '(' s= expression ( ',' p= expression )? ')'
					{
					Chain396=(Token)match(input,Chain,FOLLOW_Chain_in_func23558); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Chain.add(Chain396);

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

					pushFollow(FOLLOW_expression_in_func23564);
					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:538:29: ( ',' p= 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:538:30: ',' p= expression
							{
							char_literal398=(Token)match(input,Comma,FOLLOW_Comma_in_func23567); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal398);

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

					}

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

					// AST REWRITE
					// elements: Chain, p, s
					// token labels: 
					// rule labels: retval, s, p
					// 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);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);
					RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 539:35: -> ^( FUNC_CALL[$Chain] Chain $s ( $p)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:539:38: ^( FUNC_CALL[$Chain] Chain $s ( $p)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Chain396), 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:539: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 55 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:540:6: Signal '(' d= expression ',' v= expression ')'
					{
					Signal400=(Token)match(input,Signal,FOLLOW_Signal_in_func23632); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Signal.add(Signal400);

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

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

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

					// AST REWRITE
					// elements: v, d, Signal
					// token labels: 
					// rule labels: v, retval, d
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_d=new RewriteRuleSubtreeStream(adaptor,"rule d",d!=null?d.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 541:35: -> ^( FUNC_CALL[$Signal] Signal $d $v)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:541:38: ^( FUNC_CALL[$Signal] Signal $d $v)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Signal400), 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 56 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:542:6: Sleep '(' expression ')'
					{
					Sleep404=(Token)match(input,Sleep,FOLLOW_Sleep_in_func23702); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Sleep.add(Sleep404);

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

					pushFollow(FOLLOW_expression_in_func23707);
					expression406=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression406.getTree());
					char_literal407=(Token)match(input,CParen,FOLLOW_CParen_in_func23709); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal407);

					// 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();
					// 542:35: -> ^( FUNC_CALL[$Sleep] Sleep expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:542:38: ^( FUNC_CALL[$Sleep] Sleep expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Sleep404), 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 57 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:543:6: Matches '(' s= expression ',' r= expression ')'
					{
					Matches408=(Token)match(input,Matches,FOLLOW_Matches_in_func23730); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Matches.add(Matches408);

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

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

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

					// AST REWRITE
					// elements: r, Matches, s
					// token labels: 
					// rule labels: retval, s, r
					// 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);
					RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"rule s",s!=null?s.getTree():null);
					RewriteRuleSubtreeStream stream_r=new RewriteRuleSubtreeStream(adaptor,"rule r",r!=null?r.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 543:52: -> ^( FUNC_CALL[$Matches] Matches $s $r)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:543:55: ^( FUNC_CALL[$Matches] Matches $s $r)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Matches408), 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 58 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:544:6: Rand '(' expression ')'
					{
					Rand412=(Token)match(input,Rand,FOLLOW_Rand_in_func23766); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Rand.add(Rand412);

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

					pushFollow(FOLLOW_expression_in_func23772);
					expression414=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression414.getTree());
					char_literal415=(Token)match(input,CParen,FOLLOW_CParen_in_func23774); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal415);

					// AST REWRITE
					// elements: Rand, 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();
					// 544:35: -> ^( FUNC_CALL[$Rand] Rand expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:544:38: ^( FUNC_CALL[$Rand] Rand expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Rand412), 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 59 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:545:6: Spawn '(' p= expression ( ',' ex= expression ',' f= expression )? ')'
					{
					Spawn416=(Token)match(input,Spawn,FOLLOW_Spawn_in_func23795); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Spawn.add(Spawn416);

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

					pushFollow(FOLLOW_expression_in_func23801);
					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:545:29: ( ',' ex= expression ',' f= 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:545:30: ',' ex= expression ',' f= expression
							{
							char_literal418=(Token)match(input,Comma,FOLLOW_Comma_in_func23804); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal418);

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

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

					}

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

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

					root_0 = (Object)adaptor.nil();
					// 546:35: -> ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:546:38: ^( FUNC_CALL[$Spawn] Spawn $p ( $ex)? ( $f)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Spawn416), 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:546: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:546: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 60 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:547:6: Defined '(' Identifier ')'
					{
					Defined421=(Token)match(input,Defined,FOLLOW_Defined_in_func23879); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Defined.add(Defined421);

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

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

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

					// AST REWRITE
					// elements: Identifier, 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();
					// 547:35: -> ^( FUNC_CALL[$Defined] Defined Identifier )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:547:38: ^( FUNC_CALL[$Defined] Defined Identifier )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Defined421), 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 61 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:548:6: Round '(' v= expression ( ',' dp= expression )? ')'
					{
					Round425=(Token)match(input,Round,FOLLOW_Round_in_func23905); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Round.add(Round425);

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

					pushFollow(FOLLOW_expression_in_func23911);
					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:548:29: ( ',' dp= 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:548:30: ',' dp= expression
							{
							char_literal427=(Token)match(input,Comma,FOLLOW_Comma_in_func23914); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Comma.add(char_literal427);

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

					}

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

					// AST REWRITE
					// elements: v, Round, dp
					// token labels: 
					// rule labels: v, retval, dp
					// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_dp=new RewriteRuleSubtreeStream(adaptor,"rule dp",dp!=null?dp.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 549:35: -> ^( FUNC_CALL[$Round] Round $v ( $dp)? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:549:38: ^( FUNC_CALL[$Round] Round $v ( $dp)? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Round425), 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:549: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 62 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:550:6: Lib '(' expression ')'
					{
					Lib429=(Token)match(input,Lib,FOLLOW_Lib_in_func23979); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Lib.add(Lib429);

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

					pushFollow(FOLLOW_expression_in_func23985);
					expression431=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression431.getTree());
					char_literal432=(Token)match(input,CParen,FOLLOW_CParen_in_func23987); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal432);

					// AST REWRITE
					// elements: expression, Lib
					// 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();
					// 550:35: -> ^( FUNC_CALL[$Lib] Lib expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:550:38: ^( FUNC_CALL[$Lib] Lib expression )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Lib429), 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 63 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:551:6: Call '(' a= expression ',' b= expression ',' c= expression ')'
					{
					Call433=(Token)match(input,Call,FOLLOW_Call_in_func24009); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Call.add(Call433);

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

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

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

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

					// AST REWRITE
					// elements: b, c, a, Call
					// token labels: 
					// rule labels: retval, b, c, a
					// 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);
					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_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 552:35: -> ^( FUNC_CALL[$Call] Call $a $b $c)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:552:38: ^( FUNC_CALL[$Call] Call $a $b $c)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Call433), 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 64 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:553:6: New '(' a= expression ')'
					{
					New438=(Token)match(input,New,FOLLOW_New_in_func24089); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_New.add(New438);

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

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

					// AST REWRITE
					// elements: New, a
					// token labels: 
					// rule labels: retval, a
					// 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);
					RewriteRuleSubtreeStream stream_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 554:35: -> ^( FUNC_CALL[$New] New $a)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:554:38: ^( FUNC_CALL[$New] New $a)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, New438), 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 65 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:555:6: GenSchema '(' a= expression ')'
					{
					GenSchema441=(Token)match(input,GenSchema,FOLLOW_GenSchema_in_func24152); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GenSchema.add(GenSchema441);

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

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

					// AST REWRITE
					// elements: GenSchema, a
					// token labels: 
					// rule labels: retval, a
					// 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);
					RewriteRuleSubtreeStream stream_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 556:35: -> ^( FUNC_CALL[$GenSchema] GenSchema $a)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:556:38: ^( FUNC_CALL[$GenSchema] GenSchema $a)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GenSchema441), 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 66 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:557:6: GenStruct '(' Identifier ',' b= expression ')'
					{
					GenStruct444=(Token)match(input,GenStruct,FOLLOW_GenStruct_in_func24213); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GenStruct.add(GenStruct444);

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

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

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

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

					// AST REWRITE
					// elements: b, Identifier, GenStruct
					// token labels: 
					// rule labels: retval, b
					// 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);
					RewriteRuleSubtreeStream stream_b=new RewriteRuleSubtreeStream(adaptor,"rule b",b!=null?b.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 558:35: -> ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:558:38: ^( FUNC_CALL[$GenStruct] GenStruct Identifier $b)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, GenStruct444), 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 67 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:559:6: Template '(' t= expression ',' p= expression ')'
					{
					Template449=(Token)match(input,Template,FOLLOW_Template_in_func24280); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Template.add(Template449);

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

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

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

					// AST REWRITE
					// elements: Template, p, t
					// token labels: 
					// rule labels: retval, t, p
					// 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);
					RewriteRuleSubtreeStream stream_t=new RewriteRuleSubtreeStream(adaptor,"rule t",t!=null?t.getTree():null);
					RewriteRuleSubtreeStream stream_p=new RewriteRuleSubtreeStream(adaptor,"rule p",p!=null?p.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 560:35: -> ^( FUNC_CALL[$Template] Template $t $p)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:560:38: ^( FUNC_CALL[$Template] Template $t $p)
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_CALL, Template449), 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 68 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:561:6: KernelIdentifier '(' ( exprList )? ')'
					{
					KernelIdentifier453=(Token)match(input,KernelIdentifier,FOLLOW_KernelIdentifier_in_func24350); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_KernelIdentifier.add(KernelIdentifier453);

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

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

					}

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

					// 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();
					// 562:35: -> ^( KernelIdentifier ( exprList )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:562:38: ^( KernelIdentifier ( exprList )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(token("KERNEL_CALL", KERNEL_CALL, KernelIdentifier453.getLine()), root_1);
						adaptor.addChild(root_1, stream_KernelIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:562: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 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:573: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 End460=null;
		ParserRuleReturnScope ifStat457 =null;
		ParserRuleReturnScope elseIfStat458 =null;
		ParserRuleReturnScope elseStat459 =null;

		Object End460_tree=null;
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleSubtreeStream stream_elseIfStat=new RewriteRuleSubtreeStream(adaptor,"rule elseIfStat");
		RewriteRuleSubtreeStream stream_ifStat=new RewriteRuleSubtreeStream(adaptor,"rule ifStat");
		RewriteRuleSubtreeStream stream_elseStat=new RewriteRuleSubtreeStream(adaptor,"rule elseStat");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:3: ( ifStat ( elseIfStat )* ( elseStat )? ( End )? -> ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:6: ifStat ( elseIfStat )* ( elseStat )? ( End )?
			{
			pushFollow(FOLLOW_ifStat_in_ifStatement4424);
			ifStat457=ifStat();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_ifStat.add(ifStat457.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:13: ( elseIfStat )*
			loop34:
			while (true) {
				int alt34=2;
				int LA34_0 = input.LA(1);
				if ( (LA34_0==Else) ) {
					int LA34_1 = input.LA(2);
					if ( (synpred142_Reflex()) ) {
						alt34=1;
					}

				}

				switch (alt34) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:13: elseIfStat
					{
					pushFollow(FOLLOW_elseIfStat_in_ifStatement4426);
					elseIfStat458=elseIfStat();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_elseIfStat.add(elseIfStat458.getTree());
					}
					break;

				default :
					break loop34;
				}
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:25: ( elseStat )?
			int alt35=2;
			int LA35_0 = input.LA(1);
			if ( (LA35_0==Else) ) {
				int LA35_1 = input.LA(2);
				if ( (synpred143_Reflex()) ) {
					alt35=1;
				}
			}
			switch (alt35) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:25: elseStat
					{
					pushFollow(FOLLOW_elseStat_in_ifStatement4429);
					elseStat459=elseStat();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_elseStat.add(elseStat459.getTree());
					}
					break;

			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:35: ( End )?
			int alt36=2;
			int LA36_0 = input.LA(1);
			if ( (LA36_0==End) ) {
				int LA36_1 = input.LA(2);
				if ( (synpred144_Reflex()) ) {
					alt36=1;
				}
			}
			switch (alt36) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:35: End
					{
					End460=(Token)match(input,End,FOLLOW_End_in_ifStatement4432); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End460);

					}
					break;

			}

			// AST REWRITE
			// elements: elseStat, elseIfStat, ifStat
			// 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:40: -> ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:43: ^( IF[$ifStat.start] ifStat ( elseIfStat )* ( elseStat )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IF, (ifStat457!=null?(ifStat457.start):null)), root_1);
				adaptor.addChild(root_1, stream_ifStat.nextTree());
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574: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:574: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:577: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 If461=null;
		Token Do463=null;
		Token If465=null;
		Token char_literal467=null;
		Token char_literal469=null;
		ParserRuleReturnScope expression462 =null;
		ParserRuleReturnScope block464 =null;
		ParserRuleReturnScope expression466 =null;
		ParserRuleReturnScope block468 =null;

		Object If461_tree=null;
		Object Do463_tree=null;
		Object If465_tree=null;
		Object char_literal467_tree=null;
		Object char_literal469_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_If=new RewriteRuleTokenStream(adaptor,"token If");
		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:578:3: ( If expression Do block -> ^( EXP[$If] expression block ) | If expression '{' block '}' -> ^( EXP[$If] expression block ) )
			int alt37=2;
			int LA37_0 = input.LA(1);
			if ( (LA37_0==If) ) {
				int LA37_1 = input.LA(2);
				if ( (synpred145_Reflex()) ) {
					alt37=1;
				}
				else if ( (true) ) {
					alt37=2;
				}

			}

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

			switch (alt37) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:6: If expression Do block
					{
					If461=(Token)match(input,If,FOLLOW_If_in_ifStat4462); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If461);

					pushFollow(FOLLOW_expression_in_ifStat4464);
					expression462=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression462.getTree());
					Do463=(Token)match(input,Do,FOLLOW_Do_in_ifStat4466); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do463);

					pushFollow(FOLLOW_block_in_ifStat4468);
					block464=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block464.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();
					// 578:29: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:32: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If461), 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:579:6: If expression '{' block '}'
					{
					If465=(Token)match(input,If,FOLLOW_If_in_ifStat4486); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If465);

					pushFollow(FOLLOW_expression_in_ifStat4488);
					expression466=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression466.getTree());
					char_literal467=(Token)match(input,OBrace,FOLLOW_OBrace_in_ifStat4490); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal467);

					pushFollow(FOLLOW_block_in_ifStat4492);
					block468=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block468.getTree());
					char_literal469=(Token)match(input,CBrace,FOLLOW_CBrace_in_ifStat4494); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal469);

					// AST REWRITE
					// elements: 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();
					// 579:34: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:579:38: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If465), 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:582: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 Else470=null;
		Token If471=null;
		Token Do473=null;
		Token Else475=null;
		Token If476=null;
		Token char_literal478=null;
		Token char_literal480=null;
		ParserRuleReturnScope expression472 =null;
		ParserRuleReturnScope block474 =null;
		ParserRuleReturnScope expression477 =null;
		ParserRuleReturnScope block479 =null;

		Object Else470_tree=null;
		Object If471_tree=null;
		Object Do473_tree=null;
		Object Else475_tree=null;
		Object If476_tree=null;
		Object char_literal478_tree=null;
		Object char_literal480_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
		RewriteRuleTokenStream stream_If=new RewriteRuleTokenStream(adaptor,"token If");
		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:583:3: ( Else If expression Do block -> ^( EXP[$If] expression block ) | Else If expression '{' block '}' -> ^( EXP[$If] expression block ) )
			int alt38=2;
			int LA38_0 = input.LA(1);
			if ( (LA38_0==Else) ) {
				int LA38_1 = input.LA(2);
				if ( (synpred146_Reflex()) ) {
					alt38=1;
				}
				else if ( (true) ) {
					alt38=2;
				}

			}

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

			switch (alt38) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:583:6: Else If expression Do block
					{
					Else470=(Token)match(input,Else,FOLLOW_Else_in_elseIfStat4520); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else470);

					If471=(Token)match(input,If,FOLLOW_If_in_elseIfStat4522); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If471);

					pushFollow(FOLLOW_expression_in_elseIfStat4524);
					expression472=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression472.getTree());
					Do473=(Token)match(input,Do,FOLLOW_Do_in_elseIfStat4526); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do473);

					pushFollow(FOLLOW_block_in_elseIfStat4528);
					block474=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block474.getTree());
					// AST REWRITE
					// elements: 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();
					// 583:34: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:583:37: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If471), 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:584:6: Else If expression '{' block '}'
					{
					Else475=(Token)match(input,Else,FOLLOW_Else_in_elseIfStat4546); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else475);

					If476=(Token)match(input,If,FOLLOW_If_in_elseIfStat4548); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_If.add(If476);

					pushFollow(FOLLOW_expression_in_elseIfStat4550);
					expression477=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression477.getTree());
					char_literal478=(Token)match(input,OBrace,FOLLOW_OBrace_in_elseIfStat4552); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal478);

					pushFollow(FOLLOW_block_in_elseIfStat4554);
					block479=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block479.getTree());
					char_literal480=(Token)match(input,CBrace,FOLLOW_CBrace_in_elseIfStat4556); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal480);

					// 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();
					// 584:39: -> ^( EXP[$If] expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:584:42: ^( EXP[$If] expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, If476), 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:587: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 Else481=null;
		Token Do482=null;
		Token Else484=null;
		Token char_literal485=null;
		Token char_literal487=null;
		ParserRuleReturnScope block483 =null;
		ParserRuleReturnScope block486 =null;

		Object Else481_tree=null;
		Object Do482_tree=null;
		Object Else484_tree=null;
		Object char_literal485_tree=null;
		Object char_literal487_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
		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:588:3: ( Else Do block -> ^( EXP[$Else] block ) | Else '{' block '}' -> ^( EXP[$Else] block ) )
			int alt39=2;
			int LA39_0 = input.LA(1);
			if ( (LA39_0==Else) ) {
				int LA39_1 = input.LA(2);
				if ( (LA39_1==Do) ) {
					alt39=1;
				}
				else if ( (LA39_1==OBrace) ) {
					alt39=2;
				}

				else {
					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:588:6: Else Do block
					{
					Else481=(Token)match(input,Else,FOLLOW_Else_in_elseStat4581); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else481);

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

					pushFollow(FOLLOW_block_in_elseStat4585);
					block483=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block483.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();
					// 588:20: -> ^( EXP[$Else] block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:588:23: ^( EXP[$Else] block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, Else481), 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:589:6: Else '{' block '}'
					{
					Else484=(Token)match(input,Else,FOLLOW_Else_in_elseStat4601); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Else.add(Else484);

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

					pushFollow(FOLLOW_block_in_elseStat4605);
					block486=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block486.getTree());
					char_literal487=(Token)match(input,CBrace,FOLLOW_CBrace_in_elseStat4607); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal487);

					// 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();
					// 589:25: -> ^( EXP[$Else] block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:589:28: ^( EXP[$Else] block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXP, Else484), 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:592: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 Def488=null;
		Token Identifier489=null;
		Token char_literal490=null;
		Token char_literal492=null;
		Token char_literal493=null;
		Token set495=null;
		ParserRuleReturnScope idList491 =null;
		ParserRuleReturnScope block494 =null;

		Object Def488_tree=null;
		Object Identifier489_tree=null;
		Object char_literal490_tree=null;
		Object char_literal492_tree=null;
		Object char_literal493_tree=null;
		Object set495_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:3: ( Def Identifier '(' ( idList )? ')' ( '{' )? block ( End | '}' ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:6: Def Identifier '(' ( idList )? ')' ( '{' )? block ( End | '}' )
			{
			root_0 = (Object)adaptor.nil();


			Def488=(Token)match(input,Def,FOLLOW_Def_in_functionDecl4630); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Def488_tree = (Object)adaptor.create(Def488);
			adaptor.addChild(root_0, Def488_tree);
			}

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

			char_literal490=(Token)match(input,OParen,FOLLOW_OParen_in_functionDecl4634); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal490_tree = (Object)adaptor.create(char_literal490);
			adaptor.addChild(root_0, char_literal490_tree);
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:25: ( idList )?
			int alt40=2;
			int LA40_0 = input.LA(1);
			if ( (LA40_0==Identifier) ) {
				alt40=1;
			}
			switch (alt40) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:25: idList
					{
					pushFollow(FOLLOW_idList_in_functionDecl4636);
					idList491=idList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, idList491.getTree());

					}
					break;

			}

			char_literal492=(Token)match(input,CParen,FOLLOW_CParen_in_functionDecl4639); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal492_tree = (Object)adaptor.create(char_literal492);
			adaptor.addChild(root_0, char_literal492_tree);
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:37: ( '{' )?
			int alt41=2;
			alt41 = dfa41.predict(input);
			switch (alt41) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:37: '{'
					{
					char_literal493=(Token)match(input,OBrace,FOLLOW_OBrace_in_functionDecl4641); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal493_tree = (Object)adaptor.create(char_literal493);
					adaptor.addChild(root_0, char_literal493_tree);
					}

					}
					break;

			}

			pushFollow(FOLLOW_block_in_functionDecl4644);
			block494=block();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, block494.getTree());

			set495=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(set495));
				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((Identifier489!=null?Identifier489.getText():null), (idList491!=null?((Object)idList491.getTree()):null), (block494!=null?((Object)block494.getTree()):null), Identifier489.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:597: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 Structure496=null;
		Token Identifier497=null;
		Token set498=null;
		Token set500=null;
		ParserRuleReturnScope structureMemberList499 =null;

		Object Structure496_tree=null;
		Object Identifier497_tree=null;
		Object set498_tree=null;
		Object set500_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:598:3: ( Structure Identifier ( '{' | Do ) structureMemberList ( '}' | End ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:598:5: Structure Identifier ( '{' | Do ) structureMemberList ( '}' | End )
			{
			root_0 = (Object)adaptor.nil();


			Structure496=(Token)match(input,Structure,FOLLOW_Structure_in_structureDecl4671); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Structure496_tree = (Object)adaptor.create(Structure496);
			adaptor.addChild(root_0, Structure496_tree);
			}

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

			set498=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(set498));
				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_structureDecl4683);
			structureMemberList499=structureMemberList();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, structureMemberList499.getTree());

			set500=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(set500));
				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((Identifier497!=null?Identifier497.getText():null), Identifier497.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:604: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 structureMember501 =null;


		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:605:3: ( ( structureMember )+ )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:605:6: ( structureMember )+
			{
			root_0 = (Object)adaptor.nil();


			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:605:6: ( structureMember )+
			int cnt42=0;
			loop42:
			while (true) {
				int alt42=2;
				int LA42_0 = input.LA(1);
				if ( (LA42_0==Identifier) ) {
					alt42=1;
				}

				switch (alt42) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:605:6: structureMember
					{
					pushFollow(FOLLOW_structureMember_in_structureMemberList4712);
					structureMember501=structureMember();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, structureMember501.getTree());

					}
					break;

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

			}

			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:608: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 Identifier502=null;
		Token char_literal504=null;
		ParserRuleReturnScope structureType503 =null;

		Object Identifier502_tree=null;
		Object char_literal504_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:609:3: ( Identifier structureType ';' )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:609:6: Identifier structureType ';'
			{
			root_0 = (Object)adaptor.nil();


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

			pushFollow(FOLLOW_structureType_in_structureMember4729);
			structureType503=structureType();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, structureType503.getTree());

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

			if ( state.backtracking==0 ) {
			       pushStructureMember((Identifier502!=null?Identifier502.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:615: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 objectStructureType505 =null;
		ParserRuleReturnScope simpleStructureType506 =null;
		ParserRuleReturnScope arrayStructureType507 =null;


		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:615:15: ( ( objectStructureType | simpleStructureType | arrayStructureType ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:616:4: ( objectStructureType | simpleStructureType | arrayStructureType )
			{
			root_0 = (Object)adaptor.nil();


			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:616:4: ( objectStructureType | simpleStructureType | arrayStructureType )
			int alt43=3;
			switch ( input.LA(1) ) {
			case Structure:
				{
				alt43=1;
				}
				break;
			case 208:
			case 211:
			case 215:
				{
				alt43=2;
				}
				break;
			case 206:
				{
				alt43=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 43, 0, input);
				throw nvae;
			}
			switch (alt43) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:616:6: objectStructureType
					{
					pushFollow(FOLLOW_objectStructureType_in_structureType4753);
					objectStructureType505=objectStructureType();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, objectStructureType505.getTree());

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:616:28: simpleStructureType
					{
					pushFollow(FOLLOW_simpleStructureType_in_structureType4757);
					simpleStructureType506=simpleStructureType();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleStructureType506.getTree());

					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:616:50: arrayStructureType
					{
					pushFollow(FOLLOW_arrayStructureType_in_structureType4761);
					arrayStructureType507=arrayStructureType();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, arrayStructureType507.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:619: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 Structure508=null;
		Token set509=null;
		Token set511=null;
		ParserRuleReturnScope structureMemberList510 =null;

		Object Structure508_tree=null;
		Object set509_tree=null;
		Object set511_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:619:21: ( Structure ( '{' | Do ) structureMemberList ( '}' | End ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:620:4: Structure ( '{' | Do ) structureMemberList ( '}' | End )
			{
			root_0 = (Object)adaptor.nil();


			Structure508=(Token)match(input,Structure,FOLLOW_Structure_in_objectStructureType4775); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			Structure508_tree = (Object)adaptor.create(Structure508);
			adaptor.addChild(root_0, Structure508_tree);
			}

			if ( state.backtracking==0 ) {
					structureStack.push(new Structure());
			   }
			set509=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(set509));
				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_objectStructureType4790);
			structureMemberList510=structureMemberList();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, structureMemberList510.getTree());

			set511=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(set511));
				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:629: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_literal512=null;
		Token string_literal513=null;
		ParserRuleReturnScope simpleStructureType514 =null;

		Object string_literal512_tree=null;
		Object string_literal513_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:629:20: ( 'array' 'of' simpleStructureType )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:630:4: 'array' 'of' simpleStructureType
			{
			root_0 = (Object)adaptor.nil();


			string_literal512=(Token)match(input,206,FOLLOW_206_in_arrayStructureType4812); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			string_literal512_tree = (Object)adaptor.create(string_literal512);
			adaptor.addChild(root_0, string_literal512_tree);
			}

			string_literal513=(Token)match(input,212,FOLLOW_212_in_arrayStructureType4814); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			string_literal513_tree = (Object)adaptor.create(string_literal513);
			adaptor.addChild(root_0, string_literal513_tree);
			}

			pushFollow(FOLLOW_simpleStructureType_in_arrayStructureType4816);
			simpleStructureType514=simpleStructureType();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, simpleStructureType514.getTree());

			if ( state.backtracking==0 ) { structureTypeStack.push(new ArrayStructureType(BasicStructureTypeFactory.createStructureType((simpleStructureType514!=null?input.toString(simpleStructureType514.start,simpleStructureType514.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:633: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 set515=null;

		Object set515_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:633:21: ( ( 'integer' | 'number' | 'string' ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:634:4: ( 'integer' | 'number' | 'string' )
			{
			root_0 = (Object)adaptor.nil();


			set515=input.LT(1);
			if ( input.LA(1)==208||input.LA(1)==211||input.LA(1)==215 ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set515));
				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:637: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 For516=null;
		Token Identifier517=null;
		Token char_literal518=null;
		Token To520=null;
		Token Do522=null;
		Token End524=null;
		Token char_literal525=null;
		Token char_literal527=null;
		Token For528=null;
		Token Identifier529=null;
		Token In530=null;
		Token Do532=null;
		Token End534=null;
		ParserRuleReturnScope expression519 =null;
		ParserRuleReturnScope expression521 =null;
		ParserRuleReturnScope block523 =null;
		ParserRuleReturnScope block526 =null;
		ParserRuleReturnScope expression531 =null;
		ParserRuleReturnScope block533 =null;

		Object For516_tree=null;
		Object Identifier517_tree=null;
		Object char_literal518_tree=null;
		Object To520_tree=null;
		Object Do522_tree=null;
		Object End524_tree=null;
		Object char_literal525_tree=null;
		Object char_literal527_tree=null;
		Object For528_tree=null;
		Object Identifier529_tree=null;
		Object In530_tree=null;
		Object Do532_tree=null;
		Object End534_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
		RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
		RewriteRuleTokenStream stream_To=new RewriteRuleTokenStream(adaptor,"token To");
		RewriteRuleTokenStream stream_For=new RewriteRuleTokenStream(adaptor,"token For");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		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:638: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 alt45=2;
			int LA45_0 = input.LA(1);
			if ( (LA45_0==For) ) {
				int LA45_1 = input.LA(2);
				if ( (LA45_1==Identifier) ) {
					int LA45_2 = input.LA(3);
					if ( (LA45_2==Assign) ) {
						alt45=1;
					}
					else if ( (LA45_2==In) ) {
						alt45=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("", 45, 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("", 45, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

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

			switch (alt45) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:6: For Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) )
					{
					For516=(Token)match(input,For,FOLLOW_For_in_forStatement4857); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_For.add(For516);

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

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

					pushFollow(FOLLOW_expression_in_forStatement4863);
					expression519=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression519.getTree());
					To520=(Token)match(input,To,FOLLOW_To_in_forStatement4865); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_To.add(To520);

					pushFollow(FOLLOW_expression_in_forStatement4867);
					expression521=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression521.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:50: ( ( Do block End ) | ( '{' block '}' ) )
					int alt44=2;
					int LA44_0 = input.LA(1);
					if ( (LA44_0==Do) ) {
						alt44=1;
					}
					else if ( (LA44_0==OBrace) ) {
						alt44=2;
					}

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

					switch (alt44) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:51: ( Do block End )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:51: ( Do block End )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:52: Do block End
							{
							Do522=(Token)match(input,Do,FOLLOW_Do_in_forStatement4871); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Do.add(Do522);

							pushFollow(FOLLOW_block_in_forStatement4873);
							block523=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block523.getTree());
							End524=(Token)match(input,End,FOLLOW_End_in_forStatement4875); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_End.add(End524);

							}

							}
							break;
						case 2 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:68: ( '{' block '}' )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:68: ( '{' block '}' )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:638:70: '{' block '}'
							{
							char_literal525=(Token)match(input,OBrace,FOLLOW_OBrace_in_forStatement4882); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_OBrace.add(char_literal525);

							pushFollow(FOLLOW_block_in_forStatement4884);
							block526=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block526.getTree());
							char_literal527=(Token)match(input,CBrace,FOLLOW_CBrace_in_forStatement4886); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_CBrace.add(char_literal527);

							}

							}
							break;

					}

					// AST REWRITE
					// elements: Identifier, block, expression, 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();
					// 639:6: -> ^( FORTO[$Identifier] Identifier expression expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:639:9: ^( FORTO[$Identifier] Identifier expression expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FORTO, Identifier517), 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:640:5: For Identifier In expression Do block End
					{
					For528=(Token)match(input,For,FOLLOW_For_in_forStatement4914); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_For.add(For528);

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

					In530=(Token)match(input,In,FOLLOW_In_in_forStatement4918); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_In.add(In530);

					pushFollow(FOLLOW_expression_in_forStatement4920);
					expression531=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression531.getTree());
					Do532=(Token)match(input,Do,FOLLOW_Do_in_forStatement4922); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do532);

					pushFollow(FOLLOW_block_in_forStatement4924);
					block533=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block533.getTree());
					End534=(Token)match(input,End,FOLLOW_End_in_forStatement4926); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End534);

					// AST REWRITE
					// elements: block, 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();
					// 641:6: -> ^( FORLIST[$Identifier] Identifier expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:641:9: ^( FORLIST[$Identifier] Identifier expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FORLIST, Identifier529), 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:644: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 PFor535=null;
		Token Identifier536=null;
		Token char_literal537=null;
		Token To539=null;
		Token Do541=null;
		Token End543=null;
		Token char_literal544=null;
		Token char_literal546=null;
		Token PFor547=null;
		Token Identifier548=null;
		Token In549=null;
		Token Do551=null;
		Token End553=null;
		ParserRuleReturnScope expression538 =null;
		ParserRuleReturnScope expression540 =null;
		ParserRuleReturnScope block542 =null;
		ParserRuleReturnScope block545 =null;
		ParserRuleReturnScope expression550 =null;
		ParserRuleReturnScope block552 =null;

		Object PFor535_tree=null;
		Object Identifier536_tree=null;
		Object char_literal537_tree=null;
		Object To539_tree=null;
		Object Do541_tree=null;
		Object End543_tree=null;
		Object char_literal544_tree=null;
		Object char_literal546_tree=null;
		Object PFor547_tree=null;
		Object Identifier548_tree=null;
		Object In549_tree=null;
		Object Do551_tree=null;
		Object End553_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
		RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
		RewriteRuleTokenStream stream_To=new RewriteRuleTokenStream(adaptor,"token To");
		RewriteRuleTokenStream stream_PFor=new RewriteRuleTokenStream(adaptor,"token PFor");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		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:645: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 alt47=2;
			int LA47_0 = input.LA(1);
			if ( (LA47_0==PFor) ) {
				int LA47_1 = input.LA(2);
				if ( (LA47_1==Identifier) ) {
					int LA47_2 = input.LA(3);
					if ( (LA47_2==Assign) ) {
						alt47=1;
					}
					else if ( (LA47_2==In) ) {
						alt47=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("", 47, 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("", 47, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			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:645:6: PFor Identifier '=' expression To expression ( ( Do block End ) | ( '{' block '}' ) )
					{
					PFor535=(Token)match(input,PFor,FOLLOW_PFor_in_pforStatement4958); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PFor.add(PFor535);

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

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

					pushFollow(FOLLOW_expression_in_pforStatement4964);
					expression538=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression538.getTree());
					To539=(Token)match(input,To,FOLLOW_To_in_pforStatement4966); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_To.add(To539);

					pushFollow(FOLLOW_expression_in_pforStatement4968);
					expression540=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression540.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:645:51: ( ( Do block End ) | ( '{' block '}' ) )
					int alt46=2;
					int LA46_0 = input.LA(1);
					if ( (LA46_0==Do) ) {
						alt46=1;
					}
					else if ( (LA46_0==OBrace) ) {
						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:645:52: ( Do block End )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:645:52: ( Do block End )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:645:53: Do block End
							{
							Do541=(Token)match(input,Do,FOLLOW_Do_in_pforStatement4972); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_Do.add(Do541);

							pushFollow(FOLLOW_block_in_pforStatement4974);
							block542=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block542.getTree());
							End543=(Token)match(input,End,FOLLOW_End_in_pforStatement4976); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_End.add(End543);

							}

							}
							break;
						case 2 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:645:69: ( '{' block '}' )
							{
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:645:69: ( '{' block '}' )
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:645:71: '{' block '}'
							{
							char_literal544=(Token)match(input,OBrace,FOLLOW_OBrace_in_pforStatement4983); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_OBrace.add(char_literal544);

							pushFollow(FOLLOW_block_in_pforStatement4985);
							block545=block();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_block.add(block545.getTree());
							char_literal546=(Token)match(input,CBrace,FOLLOW_CBrace_in_pforStatement4987); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_CBrace.add(char_literal546);

							}

							}
							break;

					}

					// AST REWRITE
					// elements: block, expression, 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();
					// 646:6: -> ^( PFORTO[$Identifier] Identifier expression expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:646:9: ^( PFORTO[$Identifier] Identifier expression expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PFORTO, Identifier536), 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:647:5: PFor Identifier In expression Do block End
					{
					PFor547=(Token)match(input,PFor,FOLLOW_PFor_in_pforStatement5015); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PFor.add(PFor547);

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

					In549=(Token)match(input,In,FOLLOW_In_in_pforStatement5019); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_In.add(In549);

					pushFollow(FOLLOW_expression_in_pforStatement5021);
					expression550=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression550.getTree());
					Do551=(Token)match(input,Do,FOLLOW_Do_in_pforStatement5023); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do551);

					pushFollow(FOLLOW_block_in_pforStatement5025);
					block552=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block552.getTree());
					End553=(Token)match(input,End,FOLLOW_End_in_pforStatement5027); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End553);

					// AST REWRITE
					// elements: block, 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();
					// 648:6: -> ^( PFORLIST[$Identifier] Identifier expression block )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:648:9: ^( PFORLIST[$Identifier] Identifier expression block )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PFORLIST, Identifier548), 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:651: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 While554=null;
		Token Do556=null;
		Token End558=null;
		Token char_literal559=null;
		Token char_literal561=null;
		ParserRuleReturnScope expression555 =null;
		ParserRuleReturnScope block557 =null;
		ParserRuleReturnScope block560 =null;

		Object While554_tree=null;
		Object Do556_tree=null;
		Object End558_tree=null;
		Object char_literal559_tree=null;
		Object char_literal561_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_While=new RewriteRuleTokenStream(adaptor,"token While");
		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:652:3: ( While expression ( ( Do block End ) | ( '{' block '}' ) ) -> ^( While expression block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:6: While expression ( ( Do block End ) | ( '{' block '}' ) )
			{
			While554=(Token)match(input,While,FOLLOW_While_in_whileStatement5059); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_While.add(While554);

			pushFollow(FOLLOW_expression_in_whileStatement5061);
			expression555=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression555.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:23: ( ( Do block End ) | ( '{' block '}' ) )
			int alt48=2;
			int LA48_0 = input.LA(1);
			if ( (LA48_0==Do) ) {
				alt48=1;
			}
			else if ( (LA48_0==OBrace) ) {
				alt48=2;
			}

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

			switch (alt48) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:24: ( Do block End )
					{
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:24: ( Do block End )
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:25: Do block End
					{
					Do556=(Token)match(input,Do,FOLLOW_Do_in_whileStatement5065); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Do.add(Do556);

					pushFollow(FOLLOW_block_in_whileStatement5067);
					block557=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block557.getTree());
					End558=(Token)match(input,End,FOLLOW_End_in_whileStatement5069); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End558);

					}

					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:41: ( '{' block '}' )
					{
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:41: ( '{' block '}' )
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652:42: '{' block '}'
					{
					char_literal559=(Token)match(input,OBrace,FOLLOW_OBrace_in_whileStatement5075); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBrace.add(char_literal559);

					pushFollow(FOLLOW_block_in_whileStatement5077);
					block560=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(block560.getTree());
					char_literal561=(Token)match(input,CBrace,FOLLOW_CBrace_in_whileStatement5079); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal561);

					}

					}
					break;

			}

			// AST REWRITE
			// elements: expression, block, While
			// 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();
			// 652:58: -> ^( While expression block )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:652: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:655: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 Try562=null;
		Token Do563=null;
		Token End564=null;
		Token Catch565=null;
		Token Identifier566=null;
		Token Do567=null;
		Token End568=null;
		Token Try569=null;
		Token char_literal570=null;
		Token char_literal571=null;
		Token Catch572=null;
		Token Identifier573=null;
		Token char_literal574=null;
		Token char_literal575=null;
		ParserRuleReturnScope g =null;
		ParserRuleReturnScope c =null;

		Object Try562_tree=null;
		Object Do563_tree=null;
		Object End564_tree=null;
		Object Catch565_tree=null;
		Object Identifier566_tree=null;
		Object Do567_tree=null;
		Object End568_tree=null;
		Object Try569_tree=null;
		Object char_literal570_tree=null;
		Object char_literal571_tree=null;
		Object Catch572_tree=null;
		Object Identifier573_tree=null;
		Object char_literal574_tree=null;
		Object char_literal575_tree=null;
		RewriteRuleTokenStream stream_OBrace=new RewriteRuleTokenStream(adaptor,"token OBrace");
		RewriteRuleTokenStream stream_Do=new RewriteRuleTokenStream(adaptor,"token Do");
		RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End");
		RewriteRuleTokenStream stream_Try=new RewriteRuleTokenStream(adaptor,"token Try");
		RewriteRuleTokenStream stream_Catch=new RewriteRuleTokenStream(adaptor,"token Catch");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		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:656: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 alt49=2;
			int LA49_0 = input.LA(1);
			if ( (LA49_0==Try) ) {
				int LA49_1 = input.LA(2);
				if ( (LA49_1==Do) ) {
					alt49=1;
				}
				else if ( (LA49_1==OBrace) ) {
					alt49=2;
				}

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

			}

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

			switch (alt49) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:656:6: Try Do g= block End Catch Identifier Do c= block End
					{
					Try562=(Token)match(input,Try,FOLLOW_Try_in_guardedStatement5105); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Try.add(Try562);

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

					pushFollow(FOLLOW_block_in_guardedStatement5111);
					g=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(g.getTree());
					End564=(Token)match(input,End,FOLLOW_End_in_guardedStatement5113); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End564);

					Catch565=(Token)match(input,Catch,FOLLOW_Catch_in_guardedStatement5115); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Catch.add(Catch565);

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

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

					pushFollow(FOLLOW_block_in_guardedStatement5123);
					c=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(c.getTree());
					End568=(Token)match(input,End,FOLLOW_End_in_guardedStatement5125); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_End.add(End568);

					// AST REWRITE
					// elements: g, c, Try, Identifier
					// token labels: 
					// rule labels: g, retval, c
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					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);
					RewriteRuleSubtreeStream stream_c=new RewriteRuleSubtreeStream(adaptor,"rule c",c!=null?c.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 656:57: -> ^( Try $g Identifier $c)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:656: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:657:6: Try '{' g= block '}' Catch Identifier '{' c= block '}'
					{
					Try569=(Token)match(input,Try,FOLLOW_Try_in_guardedStatement5146); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Try.add(Try569);

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

					pushFollow(FOLLOW_block_in_guardedStatement5152);
					g=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(g.getTree());
					char_literal571=(Token)match(input,CBrace,FOLLOW_CBrace_in_guardedStatement5154); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal571);

					Catch572=(Token)match(input,Catch,FOLLOW_Catch_in_guardedStatement5156); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Catch.add(Catch572);

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

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

					pushFollow(FOLLOW_block_in_guardedStatement5164);
					c=block();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_block.add(c.getTree());
					char_literal575=(Token)match(input,CBrace,FOLLOW_CBrace_in_guardedStatement5166); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBrace.add(char_literal575);

					// AST REWRITE
					// elements: g, c, Try, Identifier
					// token labels: 
					// rule labels: g, retval, c
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					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);
					RewriteRuleSubtreeStream stream_c=new RewriteRuleSubtreeStream(adaptor,"rule c",c!=null?c.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 657:59: -> ^( Try $g Identifier $c)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:657: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:660: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 Identifier576=null;
		Token char_literal577=null;
		Token Identifier578=null;

		Object Identifier576_tree=null;
		Object char_literal577_tree=null;
		Object Identifier578_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:661:3: ( Identifier ( ',' Identifier )* -> ^( ID_LIST ( Identifier )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:661:6: Identifier ( ',' Identifier )*
			{
			Identifier576=(Token)match(input,Identifier,FOLLOW_Identifier_in_idList5194); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Identifier.add(Identifier576);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:661:17: ( ',' Identifier )*
			loop50:
			while (true) {
				int alt50=2;
				int LA50_0 = input.LA(1);
				if ( (LA50_0==Comma) ) {
					alt50=1;
				}

				switch (alt50) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:661:18: ',' Identifier
					{
					char_literal577=(Token)match(input,Comma,FOLLOW_Comma_in_idList5197); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal577);

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

					}
					break;

				default :
					break loop50;
				}
			}

			// 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();
			// 661:35: -> ^( ID_LIST ( Identifier )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:661: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:664: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_literal580=null;
		ParserRuleReturnScope expression579 =null;
		ParserRuleReturnScope expression581 =null;

		Object char_literal580_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:665:3: ( expression ( ',' expression )* -> ^( EXP_LIST ( expression )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:665:6: expression ( ',' expression )*
			{
			pushFollow(FOLLOW_expression_in_exprList5224);
			expression579=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(expression579.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:665:17: ( ',' expression )*
			loop51:
			while (true) {
				int alt51=2;
				int LA51_0 = input.LA(1);
				if ( (LA51_0==Comma) ) {
					alt51=1;
				}

				switch (alt51) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:665:18: ',' expression
					{
					char_literal580=(Token)match(input,Comma,FOLLOW_Comma_in_exprList5227); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal580);

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

				default :
					break loop51;
				}
			}

			// 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();
			// 665:35: -> ^( EXP_LIST ( expression )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:665: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:668: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 condExpr582 =null;


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


			pushFollow(FOLLOW_condExpr_in_expression5254);
			condExpr582=condExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, condExpr582.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 "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:672: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_literal584=null;
		Token char_literal585=null;
		Token In586=null;
		ParserRuleReturnScope a =null;
		ParserRuleReturnScope b =null;
		ParserRuleReturnScope orExpr583 =null;
		ParserRuleReturnScope expression587 =null;

		Object char_literal584_tree=null;
		Object char_literal585_tree=null;
		Object In586_tree=null;
		RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
		RewriteRuleTokenStream stream_Colon=new RewriteRuleTokenStream(adaptor,"token Colon");
		RewriteRuleTokenStream stream_QMark=new RewriteRuleTokenStream(adaptor,"token QMark");
		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:673: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:673: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:673:6: ( orExpr -> orExpr )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:673:7: orExpr
			{
			pushFollow(FOLLOW_orExpr_in_condExpr5269);
			orExpr583=orExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_orExpr.add(orExpr583.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();
			// 673: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:674:6: ( '?' a= expression ':' b= expression -> ^( TERNARY[$a.start] orExpr $a $b) | In expression -> ^( In orExpr expression ) )?
			int alt52=3;
			int LA52_0 = input.LA(1);
			if ( (LA52_0==QMark) ) {
				alt52=1;
			}
			else if ( (LA52_0==In) ) {
				alt52=2;
			}
			switch (alt52) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:675:8: '?' a= expression ':' b= expression
					{
					char_literal584=(Token)match(input,QMark,FOLLOW_QMark_in_condExpr5290); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QMark.add(char_literal584);

					pushFollow(FOLLOW_expression_in_condExpr5294);
					a=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(a.getTree());
					char_literal585=(Token)match(input,Colon,FOLLOW_Colon_in_condExpr5296); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Colon.add(char_literal585);

					pushFollow(FOLLOW_expression_in_condExpr5300);
					b=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(b.getTree());
					// AST REWRITE
					// elements: orExpr, b, a
					// token labels: 
					// rule labels: retval, b, a
					// 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);
					RewriteRuleSubtreeStream stream_b=new RewriteRuleSubtreeStream(adaptor,"rule b",b!=null?b.getTree():null);
					RewriteRuleSubtreeStream stream_a=new RewriteRuleSubtreeStream(adaptor,"rule a",a!=null?a.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 675:42: -> ^( TERNARY[$a.start] orExpr $a $b)
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:675: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:676:8: In expression
					{
					In586=(Token)match(input,In,FOLLOW_In_in_condExpr5324); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_In.add(In586);

					pushFollow(FOLLOW_expression_in_condExpr5326);
					expression587=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression587.getTree());
					// AST REWRITE
					// elements: orExpr, In, 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();
					// 676:42: -> ^( In orExpr expression )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:676: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:680: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_literal589=null;
		ParserRuleReturnScope andExpr588 =null;
		ParserRuleReturnScope andExpr590 =null;

		Object string_literal589_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:681:3: ( andExpr ( '||' ^ andExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:681:6: andExpr ( '||' ^ andExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_andExpr_in_orExpr5378);
			andExpr588=andExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, andExpr588.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:681:14: ( '||' ^ andExpr )*
			loop53:
			while (true) {
				int alt53=2;
				int LA53_0 = input.LA(1);
				if ( (LA53_0==Or) ) {
					alt53=1;
				}

				switch (alt53) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:681:15: '||' ^ andExpr
					{
					string_literal589=(Token)match(input,Or,FOLLOW_Or_in_orExpr5381); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal589_tree = (Object)adaptor.create(string_literal589);
					root_0 = (Object)adaptor.becomeRoot(string_literal589_tree, root_0);
					}

					pushFollow(FOLLOW_andExpr_in_orExpr5384);
					andExpr590=andExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, andExpr590.getTree());

					}
					break;

				default :
					break loop53;
				}
			}

			}

			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:684: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_literal592=null;
		ParserRuleReturnScope equExpr591 =null;
		ParserRuleReturnScope equExpr593 =null;

		Object string_literal592_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:685:3: ( equExpr ( '&&' ^ equExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:685:6: equExpr ( '&&' ^ equExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_equExpr_in_andExpr5400);
			equExpr591=equExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, equExpr591.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:685:14: ( '&&' ^ equExpr )*
			loop54:
			while (true) {
				int alt54=2;
				int LA54_0 = input.LA(1);
				if ( (LA54_0==And) ) {
					alt54=1;
				}

				switch (alt54) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:685:15: '&&' ^ equExpr
					{
					string_literal592=(Token)match(input,And,FOLLOW_And_in_andExpr5403); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					string_literal592_tree = (Object)adaptor.create(string_literal592);
					root_0 = (Object)adaptor.becomeRoot(string_literal592_tree, root_0);
					}

					pushFollow(FOLLOW_equExpr_in_andExpr5406);
					equExpr593=equExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, equExpr593.getTree());

					}
					break;

				default :
					break loop54;
				}
			}

			}

			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:688: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 set595=null;
		ParserRuleReturnScope relExpr594 =null;
		ParserRuleReturnScope relExpr596 =null;

		Object set595_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:689:3: ( relExpr ( ( '==' | '!=' ) ^ relExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:689:6: relExpr ( ( '==' | '!=' ) ^ relExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_relExpr_in_equExpr5422);
			relExpr594=relExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, relExpr594.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:689:14: ( ( '==' | '!=' ) ^ relExpr )*
			loop55:
			while (true) {
				int alt55=2;
				int LA55_0 = input.LA(1);
				if ( (LA55_0==Equals||LA55_0==NEquals) ) {
					alt55=1;
				}

				switch (alt55) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:689:15: ( '==' | '!=' ) ^ relExpr
					{
					set595=input.LT(1);
					set595=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(set595), 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_equExpr5434);
					relExpr596=relExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, relExpr596.getTree());

					}
					break;

				default :
					break loop55;
				}
			}

			}

			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:692: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 set598=null;
		ParserRuleReturnScope addExpr597 =null;
		ParserRuleReturnScope addExpr599 =null;

		Object set598_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:693:3: ( addExpr ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:693:6: addExpr ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_addExpr_in_relExpr5450);
			addExpr597=addExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, addExpr597.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:693:14: ( ( '>=' | '<=' | '>' | '<' ) ^ addExpr )*
			loop56:
			while (true) {
				int alt56=2;
				int LA56_0 = input.LA(1);
				if ( ((LA56_0 >= GT && LA56_0 <= GTEquals)||(LA56_0 >= LT && LA56_0 <= LTEquals)) ) {
					alt56=1;
				}

				switch (alt56) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:693:15: ( '>=' | '<=' | '>' | '<' ) ^ addExpr
					{
					set598=input.LT(1);
					set598=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(set598), 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_relExpr5470);
					addExpr599=addExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, addExpr599.getTree());

					}
					break;

				default :
					break loop56;
				}
			}

			}

			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:696: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 set601=null;
		ParserRuleReturnScope mulExpr600 =null;
		ParserRuleReturnScope mulExpr602 =null;

		Object set601_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:697:3: ( mulExpr ( ( '+' | '-' ) ^ mulExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:697:6: mulExpr ( ( '+' | '-' ) ^ mulExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_mulExpr_in_addExpr5486);
			mulExpr600=mulExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, mulExpr600.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:697:14: ( ( '+' | '-' ) ^ mulExpr )*
			loop57:
			while (true) {
				int alt57=2;
				int LA57_0 = input.LA(1);
				if ( (LA57_0==Add||LA57_0==Subtract) ) {
					alt57=1;
				}

				switch (alt57) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:697:15: ( '+' | '-' ) ^ mulExpr
					{
					set601=input.LT(1);
					set601=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(set601), 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_addExpr5498);
					mulExpr602=mulExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, mulExpr602.getTree());

					}
					break;

				default :
					break loop57;
				}
			}

			}

			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:700: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 set604=null;
		ParserRuleReturnScope powExpr603 =null;
		ParserRuleReturnScope powExpr605 =null;

		Object set604_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:701:3: ( powExpr ( ( '*' | '/' | '%' ) ^ powExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:701:6: powExpr ( ( '*' | '/' | '%' ) ^ powExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_powExpr_in_mulExpr5514);
			powExpr603=powExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, powExpr603.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:701:14: ( ( '*' | '/' | '%' ) ^ powExpr )*
			loop58:
			while (true) {
				int alt58=2;
				int LA58_0 = input.LA(1);
				if ( (LA58_0==Divide||(LA58_0 >= Modulus && LA58_0 <= Multiply)) ) {
					alt58=1;
				}

				switch (alt58) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:701:15: ( '*' | '/' | '%' ) ^ powExpr
					{
					set604=input.LT(1);
					set604=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(set604), 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_mulExpr5530);
					powExpr605=powExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, powExpr605.getTree());

					}
					break;

				default :
					break loop58;
				}
			}

			}

			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:704: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_literal607=null;
		ParserRuleReturnScope unaryExpr606 =null;
		ParserRuleReturnScope unaryExpr608 =null;

		Object char_literal607_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:705:3: ( unaryExpr ( '^' ^ unaryExpr )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:705:6: unaryExpr ( '^' ^ unaryExpr )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_unaryExpr_in_powExpr5546);
			unaryExpr606=unaryExpr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpr606.getTree());

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:705:16: ( '^' ^ unaryExpr )*
			loop59:
			while (true) {
				int alt59=2;
				int LA59_0 = input.LA(1);
				if ( (LA59_0==Pow) ) {
					alt59=1;
				}

				switch (alt59) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:705:17: '^' ^ unaryExpr
					{
					char_literal607=(Token)match(input,Pow,FOLLOW_Pow_in_powExpr5549); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					char_literal607_tree = (Object)adaptor.create(char_literal607);
					root_0 = (Object)adaptor.becomeRoot(char_literal607_tree, root_0);
					}

					pushFollow(FOLLOW_unaryExpr_in_powExpr5552);
					unaryExpr608=unaryExpr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpr608.getTree());

					}
					break;

				default :
					break loop59;
				}
			}

			}

			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:708: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_literal609=null;
		Token char_literal611=null;
		ParserRuleReturnScope atom610 =null;
		ParserRuleReturnScope atom612 =null;
		ParserRuleReturnScope atom613 =null;

		Object char_literal609_tree=null;
		Object char_literal611_tree=null;
		RewriteRuleTokenStream stream_Excl=new RewriteRuleTokenStream(adaptor,"token Excl");
		RewriteRuleTokenStream stream_Subtract=new RewriteRuleTokenStream(adaptor,"token Subtract");
		RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:709:3: ( '-' atom -> ^( UNARY_MIN[$atom.start] atom ) | '!' atom -> ^( NEGATE[$atom.start] atom ) | atom )
			int alt60=3;
			switch ( input.LA(1) ) {
			case Subtract:
				{
				alt60=1;
				}
				break;
			case Excl:
				{
				alt60=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:
				{
				alt60=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 60, 0, input);
				throw nvae;
			}
			switch (alt60) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:709:6: '-' atom
					{
					char_literal609=(Token)match(input,Subtract,FOLLOW_Subtract_in_unaryExpr5568); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Subtract.add(char_literal609);

					pushFollow(FOLLOW_atom_in_unaryExpr5570);
					atom610=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_atom.add(atom610.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();
					// 709:15: -> ^( UNARY_MIN[$atom.start] atom )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:709:18: ^( UNARY_MIN[$atom.start] atom )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_MIN, (atom610!=null?(atom610.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:710:6: '!' atom
					{
					char_literal611=(Token)match(input,Excl,FOLLOW_Excl_in_unaryExpr5586); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Excl.add(char_literal611);

					pushFollow(FOLLOW_atom_in_unaryExpr5588);
					atom612=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_atom.add(atom612.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();
					// 710:15: -> ^( NEGATE[$atom.start] atom )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:710:18: ^( NEGATE[$atom.start] atom )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NEGATE, (atom612!=null?(atom612.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:711:6: atom
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_atom_in_unaryExpr5604);
					atom613=atom();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, atom613.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:714: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_literal614=null;

		Object char_literal614_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:714:10: ( '-' )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:715:4: '-'
			{
			root_0 = (Object)adaptor.nil();


			char_literal614=(Token)match(input,Subtract,FOLLOW_Subtract_in_sparsesep5617); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			char_literal614_tree = (Object)adaptor.create(char_literal614);
			adaptor.addChild(root_0, char_literal614_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:717: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_literal615=null;
		Token char_literal617=null;
		ParserRuleReturnScope sparsesep616 =null;

		Object char_literal615_tree=null;
		Object char_literal617_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:718:3: ( '[' ( sparsesep )+ ']' -> ^( SPARSE ( sparsesep )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:6: '[' ( sparsesep )+ ']'
			{
			char_literal615=(Token)match(input,OBracket,FOLLOW_OBracket_in_sparsematrix5628); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBracket.add(char_literal615);

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:10: ( sparsesep )+
			int cnt61=0;
			loop61:
			while (true) {
				int alt61=2;
				int LA61_0 = input.LA(1);
				if ( (LA61_0==Subtract) ) {
					alt61=1;
				}

				switch (alt61) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718:10: sparsesep
					{
					pushFollow(FOLLOW_sparsesep_in_sparsematrix5630);
					sparsesep616=sparsesep();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_sparsesep.add(sparsesep616.getTree());
					}
					break;

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

			char_literal617=(Token)match(input,CBracket,FOLLOW_CBracket_in_sparsematrix5633); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBracket.add(char_literal617);

			// 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();
			// 718:25: -> ^( SPARSE ( sparsesep )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:718: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:721:1: atom : ( Number | Integer | Long | 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 Number618=null;
		Token Integer619=null;
		Token Long620=null;
		Token Bool621=null;
		Token Null622=null;
		ParserRuleReturnScope sparsematrix623 =null;
		ParserRuleReturnScope lookup624 =null;

		Object Number618_tree=null;
		Object Integer619_tree=null;
		Object Long620_tree=null;
		Object Bool621_tree=null;
		Object Null622_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:722:3: ( Number | Integer | Long | Bool | Null | sparsematrix | lookup )
			int alt62=7;
			switch ( input.LA(1) ) {
			case Number:
				{
				alt62=1;
				}
				break;
			case Integer:
				{
				alt62=2;
				}
				break;
			case Long:
				{
				alt62=3;
				}
				break;
			case Bool:
				{
				alt62=4;
				}
				break;
			case Null:
				{
				alt62=5;
				}
				break;
			case OBracket:
				{
				int LA62_6 = input.LA(2);
				if ( (LA62_6==Subtract) ) {
					int LA62_8 = input.LA(3);
					if ( (LA62_8==CBracket||LA62_8==Subtract) ) {
						alt62=6;
					}
					else if ( (LA62_8==All||(LA62_8 >= Any && LA62_8 <= Assert)||(LA62_8 >= AsyncCall && LA62_8 <= AsyncCallScript)||(LA62_8 >= AsyncStatus && LA62_8 <= B64Decompress)||LA62_8==Bool||(LA62_8 >= Call && LA62_8 <= Cast)||(LA62_8 >= Chain && LA62_8 <= Collate)||LA62_8==Copy||(LA62_8 >= Date && LA62_8 <= Debug)||(LA62_8 >= Defined && LA62_8 <= Difference)||(LA62_8 >= DottedIdentifier && LA62_8 <= DropWhile)||LA62_8==Evals||(LA62_8 >= File && LA62_8 <= Fold)||(LA62_8 >= Format && LA62_8 <= FromJson)||(LA62_8 >= GenSchema && LA62_8 <= HasCapability)||LA62_8==Identifier||(LA62_8 >= Integer && LA62_8 <= Json)||(LA62_8 >= KernelIdentifier && LA62_8 <= Keys)||(LA62_8 >= Lib && LA62_8 <= Long)||LA62_8==MD5||(LA62_8 >= MapFn && LA62_8 <= MkDir)||(LA62_8 >= New && LA62_8 <= OParen)||LA62_8==PackageIdentifier||LA62_8==Port||(LA62_8 >= Print && LA62_8 <= PropertyPlaceholder)||LA62_8==PutCache||LA62_8==QuotedString||(LA62_8 >= RPull && LA62_8 <= Replace)||LA62_8==Round||(LA62_8 >= Signal && LA62_8 <= Sort)||(LA62_8 >= Spawn && LA62_8 <= String)||(LA62_8 >= Suspend && LA62_8 <= SuspendWait)||(LA62_8 >= TakeWhile && LA62_8 <= Template)||(LA62_8 >= Time && LA62_8 <= Timer)||LA62_8==Transpose||LA62_8==TypeOf||(LA62_8 >= Unique && LA62_8 <= UrlEncode)||(LA62_8 >= Uuid && LA62_8 <= Wait)) ) {
						alt62=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("", 62, 8, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}
				else if ( (LA62_6==All||(LA62_6 >= Any && LA62_6 <= Assert)||(LA62_6 >= AsyncCall && LA62_6 <= AsyncCallScript)||(LA62_6 >= AsyncStatus && LA62_6 <= B64Decompress)||LA62_6==Bool||LA62_6==CBracket||(LA62_6 >= Call && LA62_6 <= Cast)||(LA62_6 >= Chain && LA62_6 <= Collate)||LA62_6==Copy||(LA62_6 >= Date && LA62_6 <= Debug)||(LA62_6 >= Defined && LA62_6 <= Difference)||(LA62_6 >= DottedIdentifier && LA62_6 <= DropWhile)||(LA62_6 >= Evals && LA62_6 <= Excl)||(LA62_6 >= File && LA62_6 <= Fold)||(LA62_6 >= Format && LA62_6 <= FromJson)||(LA62_6 >= GenSchema && LA62_6 <= HasCapability)||LA62_6==Identifier||(LA62_6 >= Integer && LA62_6 <= Json)||(LA62_6 >= KernelIdentifier && LA62_6 <= Keys)||(LA62_6 >= Lib && LA62_6 <= Long)||LA62_6==MD5||(LA62_6 >= MapFn && LA62_6 <= MkDir)||(LA62_6 >= New && LA62_6 <= OParen)||LA62_6==PackageIdentifier||LA62_6==Port||(LA62_6 >= Print && LA62_6 <= PropertyPlaceholder)||LA62_6==PutCache||LA62_6==QuotedString||(LA62_6 >= RPull && LA62_6 <= Replace)||LA62_6==Round||(LA62_6 >= Signal && LA62_6 <= Sort)||(LA62_6 >= Spawn && LA62_6 <= String)||(LA62_6 >= Suspend && LA62_6 <= SuspendWait)||(LA62_6 >= TakeWhile && LA62_6 <= Template)||(LA62_6 >= Time && LA62_6 <= Timer)||LA62_6==Transpose||LA62_6==TypeOf||(LA62_6 >= Unique && LA62_6 <= UrlEncode)||(LA62_6 >= Uuid && LA62_6 <= Wait)) ) {
					alt62=7;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 62, 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:
				{
				alt62=7;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 62, 0, input);
				throw nvae;
			}
			switch (alt62) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:722:6: Number
					{
					root_0 = (Object)adaptor.nil();


					Number618=(Token)match(input,Number,FOLLOW_Number_in_atom5656); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Number618_tree = (Object)adaptor.create(Number618);
					adaptor.addChild(root_0, Number618_tree);
					}

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


					Integer619=(Token)match(input,Integer,FOLLOW_Integer_in_atom5663); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Integer619_tree = (Object)adaptor.create(Integer619);
					adaptor.addChild(root_0, Integer619_tree);
					}

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


					Long620=(Token)match(input,Long,FOLLOW_Long_in_atom5670); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Long620_tree = (Object)adaptor.create(Long620);
					adaptor.addChild(root_0, Long620_tree);
					}

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


					Bool621=(Token)match(input,Bool,FOLLOW_Bool_in_atom5677); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Bool621_tree = (Object)adaptor.create(Bool621);
					adaptor.addChild(root_0, Bool621_tree);
					}

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


					Null622=(Token)match(input,Null,FOLLOW_Null_in_atom5684); if (state.failed) return retval;
					if ( state.backtracking==0 ) {
					Null622_tree = (Object)adaptor.create(Null622);
					adaptor.addChild(root_0, Null622_tree);
					}

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


					pushFollow(FOLLOW_sparsematrix_in_atom5691);
					sparsematrix623=sparsematrix();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, sparsematrix623.getTree());

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


					pushFollow(FOLLOW_lookup_in_atom5698);
					lookup624=lookup();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, lookup624.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:733: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_literal625=null;
		Token char_literal627=null;
		ParserRuleReturnScope exprList626 =null;

		Object char_literal625_tree=null;
		Object char_literal627_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:734:3: ( '[' ( exprList )? ']' -> ^( LIST ( exprList )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:734:6: '[' ( exprList )? ']'
			{
			char_literal625=(Token)match(input,OBracket,FOLLOW_OBracket_in_list5714); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBracket.add(char_literal625);

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

			}

			char_literal627=(Token)match(input,CBracket,FOLLOW_CBracket_in_list5719); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBracket.add(char_literal627);

			// 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();
			// 734:24: -> ^( LIST ( exprList )? )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:734: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:734: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:737: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_literal628=null;
		Token char_literal630=null;
		ParserRuleReturnScope keyValList629 =null;

		Object char_literal628_tree=null;
		Object char_literal630_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:738:3: ( '{' ( keyValList )? '}' -> ^( MAPDEF ( keyValList )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:738:6: '{' ( keyValList )? '}'
			{
			char_literal628=(Token)match(input,OBrace,FOLLOW_OBrace_in_mapdef5742); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBrace.add(char_literal628);

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

			}

			char_literal630=(Token)match(input,CBrace,FOLLOW_CBrace_in_mapdef5747); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBrace.add(char_literal630);

			// 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();
			// 738:26: -> ^( MAPDEF ( keyValList )? )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:738: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:738: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:741: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_literal632=null;
		ParserRuleReturnScope keyVal631 =null;
		ParserRuleReturnScope keyVal633 =null;

		Object char_literal632_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:742:3: ( keyVal ( ',' keyVal )* -> ^( KEYVAL_LIST ( keyVal )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:6: keyVal ( ',' keyVal )*
			{
			pushFollow(FOLLOW_keyVal_in_keyValList5770);
			keyVal631=keyVal();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_keyVal.add(keyVal631.getTree());
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:13: ( ',' keyVal )*
			loop65:
			while (true) {
				int alt65=2;
				int LA65_0 = input.LA(1);
				if ( (LA65_0==Comma) ) {
					alt65=1;
				}

				switch (alt65) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742:14: ',' keyVal
					{
					char_literal632=(Token)match(input,Comma,FOLLOW_Comma_in_keyValList5773); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Comma.add(char_literal632);

					pushFollow(FOLLOW_keyVal_in_keyValList5775);
					keyVal633=keyVal();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_keyVal.add(keyVal633.getTree());
					}
					break;

				default :
					break loop65;
				}
			}

			// 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();
			// 742:27: -> ^( KEYVAL_LIST ( keyVal )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:742: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:745: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_literal634=null;
		ParserRuleReturnScope k =null;
		ParserRuleReturnScope v =null;

		Object char_literal634_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:746:3: (k= expression ':' v= expression -> ^( KEYVAL[$k.start] $k $v) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:746:6: k= expression ':' v= expression
			{
			pushFollow(FOLLOW_expression_in_keyVal5802);
			k=expression();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expression.add(k.getTree());
			char_literal634=(Token)match(input,Colon,FOLLOW_Colon_in_keyVal5804); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_Colon.add(char_literal634);

			pushFollow(FOLLOW_expression_in_keyVal5808);
			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, retval, k
			// 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_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
			RewriteRuleSubtreeStream stream_k=new RewriteRuleSubtreeStream(adaptor,"rule k",k!=null?k.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 746:36: -> ^( KEYVAL[$k.start] $k $v)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:746: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 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:749: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 PropertyPlaceholder637=null;
		Token Identifier638=null;
		Token DottedIdentifier640=null;
		Token DottedIdentifier646=null;
		Token Identifier648=null;
		Token String650=null;
		Token QuotedString652=null;
		Token char_literal654=null;
		Token char_literal656=null;
		ParserRuleReturnScope functionCall635 =null;
		ParserRuleReturnScope indexes636 =null;
		ParserRuleReturnScope rangeindex639 =null;
		ParserRuleReturnScope rangeindex641 =null;
		ParserRuleReturnScope list642 =null;
		ParserRuleReturnScope indexes643 =null;
		ParserRuleReturnScope mapdef644 =null;
		ParserRuleReturnScope indexes645 =null;
		ParserRuleReturnScope indexes647 =null;
		ParserRuleReturnScope indexes649 =null;
		ParserRuleReturnScope indexes651 =null;
		ParserRuleReturnScope indexes653 =null;
		ParserRuleReturnScope expression655 =null;
		ParserRuleReturnScope indexes657 =null;

		Object PropertyPlaceholder637_tree=null;
		Object Identifier638_tree=null;
		Object DottedIdentifier640_tree=null;
		Object DottedIdentifier646_tree=null;
		Object Identifier648_tree=null;
		Object String650_tree=null;
		Object QuotedString652_tree=null;
		Object char_literal654_tree=null;
		Object char_literal656_tree=null;
		RewriteRuleTokenStream stream_OParen=new RewriteRuleTokenStream(adaptor,"token OParen");
		RewriteRuleTokenStream stream_CParen=new RewriteRuleTokenStream(adaptor,"token CParen");
		RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");
		RewriteRuleTokenStream stream_DottedIdentifier=new RewriteRuleTokenStream(adaptor,"token DottedIdentifier");
		RewriteRuleTokenStream stream_QuotedString=new RewriteRuleTokenStream(adaptor,"token QuotedString");
		RewriteRuleTokenStream stream_Identifier=new RewriteRuleTokenStream(adaptor,"token Identifier");
		RewriteRuleTokenStream stream_PropertyPlaceholder=new RewriteRuleTokenStream(adaptor,"token PropertyPlaceholder");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
		RewriteRuleSubtreeStream stream_functionCall=new RewriteRuleSubtreeStream(adaptor,"rule functionCall");
		RewriteRuleSubtreeStream stream_rangeindex=new RewriteRuleSubtreeStream(adaptor,"rule rangeindex");
		RewriteRuleSubtreeStream stream_indexes=new RewriteRuleSubtreeStream(adaptor,"rule indexes");
		RewriteRuleSubtreeStream stream_mapdef=new RewriteRuleSubtreeStream(adaptor,"rule mapdef");
		RewriteRuleSubtreeStream stream_list=new RewriteRuleSubtreeStream(adaptor,"rule list");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750: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 alt74=11;
			alt74 = dfa74.predict(input);
			switch (alt74) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:6: functionCall ( indexes )?
					{
					pushFollow(FOLLOW_functionCall_in_lookup5835);
					functionCall635=functionCall();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_functionCall.add(functionCall635.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:19: ( indexes )?
					int alt66=2;
					int LA66_0 = input.LA(1);
					if ( (LA66_0==OBracket) ) {
						alt66=1;
					}
					switch (alt66) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:19: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup5837);
							indexes636=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes636.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: indexes, 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();
					// 750:34: -> ^( LOOKUP[$functionCall.start] functionCall ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:37: ^( LOOKUP[$functionCall.start] functionCall ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (functionCall635!=null?(functionCall635.start):null)), root_1);
						adaptor.addChild(root_1, stream_functionCall.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750: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:751:6: PropertyPlaceholder
					{
					PropertyPlaceholder637=(Token)match(input,PropertyPlaceholder,FOLLOW_PropertyPlaceholder_in_lookup5863); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PropertyPlaceholder.add(PropertyPlaceholder637);

					// 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();
					// 751:34: -> ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:751:37: ^( LOOKUP[$PropertyPlaceholder] PropertyPlaceholder )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, PropertyPlaceholder637), 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:752:6: Identifier rangeindex
					{
					Identifier638=(Token)match(input,Identifier,FOLLOW_Identifier_in_lookup5887); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier638);

					pushFollow(FOLLOW_rangeindex_in_lookup5889);
					rangeindex639=rangeindex();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_rangeindex.add(rangeindex639.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();
					// 752:34: -> ^( RANGELOOKUP[$Identifier] Identifier rangeindex )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:752:37: ^( RANGELOOKUP[$Identifier] Identifier rangeindex )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RANGELOOKUP, Identifier638), 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:753:6: DottedIdentifier rangeindex
					{
					DottedIdentifier640=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_lookup5913); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DottedIdentifier.add(DottedIdentifier640);

					pushFollow(FOLLOW_rangeindex_in_lookup5915);
					rangeindex641=rangeindex();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_rangeindex.add(rangeindex641.getTree());
					// AST REWRITE
					// elements: DottedIdentifier, rangeindex
					// 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();
					// 753:34: -> ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:753:37: ^( RANGELOOKUP[$DottedIdentifier] DottedIdentifier rangeindex )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RANGELOOKUP, DottedIdentifier640), 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:754:6: list ( indexes )?
					{
					pushFollow(FOLLOW_list_in_lookup5933);
					list642=list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_list.add(list642.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754:11: ( indexes )?
					int alt67=2;
					int LA67_0 = input.LA(1);
					if ( (LA67_0==OBracket) ) {
						alt67=1;
					}
					switch (alt67) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754:11: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup5935);
							indexes643=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes643.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();
					// 754:34: -> ^( LOOKUP[$list.start] list ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754:37: ^( LOOKUP[$list.start] list ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (list642!=null?(list642.start):null)), root_1);
						adaptor.addChild(root_1, stream_list.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:754: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:755:6: mapdef ( indexes )?
					{
					pushFollow(FOLLOW_mapdef_in_lookup5969);
					mapdef644=mapdef();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_mapdef.add(mapdef644.getTree());
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:755:13: ( indexes )?
					int alt68=2;
					int LA68_0 = input.LA(1);
					if ( (LA68_0==OBracket) ) {
						alt68=1;
					}
					switch (alt68) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:755:13: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup5971);
							indexes645=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes645.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: indexes, mapdef
					// 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:34: -> ^( LOOKUP[$mapdef.start] mapdef ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:755:37: ^( LOOKUP[$mapdef.start] mapdef ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (mapdef644!=null?(mapdef644.start):null)), root_1);
						adaptor.addChild(root_1, stream_mapdef.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:755: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:756:6: DottedIdentifier ( indexes )?
					{
					DottedIdentifier646=(Token)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_lookup6003); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DottedIdentifier.add(DottedIdentifier646);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:23: ( indexes )?
					int alt69=2;
					int LA69_0 = input.LA(1);
					if ( (LA69_0==OBracket) ) {
						alt69=1;
					}
					switch (alt69) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:23: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6005);
							indexes647=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes647.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: indexes, 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();
					// 756:34: -> ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:37: ^( LOOKUP[$DottedIdentifier] DottedIdentifier ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, DottedIdentifier646), root_1);
						adaptor.addChild(root_1, stream_DottedIdentifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756: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:757:6: Identifier ( indexes )?
					{
					Identifier648=(Token)match(input,Identifier,FOLLOW_Identifier_in_lookup6027); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_Identifier.add(Identifier648);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:17: ( indexes )?
					int alt70=2;
					int LA70_0 = input.LA(1);
					if ( (LA70_0==OBracket) ) {
						alt70=1;
					}
					switch (alt70) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:17: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6029);
							indexes649=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes649.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();
					// 757:34: -> ^( LOOKUP[$Identifier] Identifier ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:37: ^( LOOKUP[$Identifier] Identifier ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, Identifier648), root_1);
						adaptor.addChild(root_1, stream_Identifier.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757: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:758:6: String ( indexes )?
					{
					String650=(Token)match(input,String,FOLLOW_String_in_lookup6057); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_String.add(String650);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:758:13: ( indexes )?
					int alt71=2;
					int LA71_0 = input.LA(1);
					if ( (LA71_0==OBracket) ) {
						alt71=1;
					}
					switch (alt71) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:758:13: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6059);
							indexes651=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes651.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();
					// 758:34: -> ^( LOOKUP[$String] String ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:758:37: ^( LOOKUP[$String] String ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, String650), root_1);
						adaptor.addChild(root_1, stream_String.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:758: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:759:6: QuotedString ( indexes )?
					{
					QuotedString652=(Token)match(input,QuotedString,FOLLOW_QuotedString_in_lookup6091); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QuotedString.add(QuotedString652);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:759:19: ( indexes )?
					int alt72=2;
					int LA72_0 = input.LA(1);
					if ( (LA72_0==OBracket) ) {
						alt72=1;
					}
					switch (alt72) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:759:19: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6093);
							indexes653=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes653.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();
					// 759:34: -> ^( LOOKUP[$QuotedString] QuotedString ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:759:37: ^( LOOKUP[$QuotedString] QuotedString ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, QuotedString652), root_1);
						adaptor.addChild(root_1, stream_QuotedString.nextNode());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:759: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:760:6: '(' expression ')' ( indexes )?
					{
					char_literal654=(Token)match(input,OParen,FOLLOW_OParen_in_lookup6119); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OParen.add(char_literal654);

					pushFollow(FOLLOW_expression_in_lookup6121);
					expression655=expression();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expression.add(expression655.getTree());
					char_literal656=(Token)match(input,CParen,FOLLOW_CParen_in_lookup6123); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CParen.add(char_literal656);

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:760:25: ( indexes )?
					int alt73=2;
					int LA73_0 = input.LA(1);
					if ( (LA73_0==OBracket) ) {
						alt73=1;
					}
					switch (alt73) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:760:25: indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup6125);
							indexes657=indexes();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_indexes.add(indexes657.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();
					// 760:34: -> ^( LOOKUP[$expression.start] expression ( indexes )? )
					{
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:760:37: ^( LOOKUP[$expression.start] expression ( indexes )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOOKUP, (expression655!=null?(expression655.start):null)), root_1);
						adaptor.addChild(root_1, stream_expression.nextTree());
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:760: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:763: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_literal658=null;
		Token char_literal660=null;
		ParserRuleReturnScope exprList659 =null;

		Object char_literal658_tree=null;
		Object char_literal660_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:764:3: ( ( '[' exprList ']' )+ -> ^( INDEXES ( exprList )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:764:6: ( '[' exprList ']' )+
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:764:6: ( '[' exprList ']' )+
			int cnt75=0;
			loop75:
			while (true) {
				int alt75=2;
				int LA75_0 = input.LA(1);
				if ( (LA75_0==OBracket) ) {
					alt75=1;
				}

				switch (alt75) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:764:7: '[' exprList ']'
					{
					char_literal658=(Token)match(input,OBracket,FOLLOW_OBracket_in_indexes6153); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OBracket.add(char_literal658);

					pushFollow(FOLLOW_exprList_in_indexes6155);
					exprList659=exprList();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_exprList.add(exprList659.getTree());
					char_literal660=(Token)match(input,CBracket,FOLLOW_CBracket_in_indexes6157); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CBracket.add(char_literal660);

					}
					break;

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

			// 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();
			// 764:26: -> ^( INDEXES ( exprList )+ )
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:764: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:767: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_literal661=null;
		Token string_literal662=null;
		Token char_literal663=null;
		ParserRuleReturnScope from =null;
		ParserRuleReturnScope to =null;

		Object char_literal661_tree=null;
		Object string_literal662_tree=null;
		Object char_literal663_tree=null;
		RewriteRuleTokenStream stream_CBracket=new RewriteRuleTokenStream(adaptor,"token CBracket");
		RewriteRuleTokenStream stream_OBracket=new RewriteRuleTokenStream(adaptor,"token OBracket");
		RewriteRuleTokenStream stream_201=new RewriteRuleTokenStream(adaptor,"token 201");
		RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:768:3: ( '[' (from= expression )? '..' (to= expression )? ']' -> ^( RANGEINDEX $from $to) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:768:6: '[' (from= expression )? '..' (to= expression )? ']'
			{
			char_literal661=(Token)match(input,OBracket,FOLLOW_OBracket_in_rangeindex6182); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_OBracket.add(char_literal661);

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

			}

			string_literal662=(Token)match(input,201,FOLLOW_201_in_rangeindex6189); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_201.add(string_literal662);

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

			}

			char_literal663=(Token)match(input,CBracket,FOLLOW_CBracket_in_rangeindex6196); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_CBracket.add(char_literal663);

			// AST REWRITE
			// elements: to, from
			// token labels: 
			// rule labels: to, retval, from
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			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);
			RewriteRuleSubtreeStream stream_from=new RewriteRuleSubtreeStream(adaptor,"rule from",from!=null?from.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 768:51: -> ^( RANGEINDEX $from $to)
			{
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:768: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 synpred13_Reflex
	public final void synpred13_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:8: ( statement )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:8: statement
		{
		pushFollow(FOLLOW_statement_in_synpred13_Reflex511);
		statement();
		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:370:20: ( functionDecl )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:20: functionDecl
		{
		pushFollow(FOLLOW_functionDecl_in_synpred14_Reflex515);
		functionDecl();
		state._fsp--;
		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:370:35: ( structureDecl )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:35: structureDecl
		{
		pushFollow(FOLLOW_structureDecl_in_synpred15_Reflex519);
		structureDecl();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred15_Reflex

	// $ANTLR start synpred16_Reflex
	public final void synpred16_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:54: ( Return expression ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:370:54: Return expression ';'
		{
		match(input,Return,FOLLOW_Return_in_synpred16_Reflex526); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred16_Reflex528);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred16_Reflex530); if (state.failed) return;

		}

	}
	// $ANTLR end synpred16_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:376:6: ( assignment ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:376:6: assignment ';'
		{
		pushFollow(FOLLOW_assignment_in_synpred17_Reflex574);
		assignment();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred17_Reflex576); if (state.failed) return;

		}

	}
	// $ANTLR end synpred17_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:378:6: ( port ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:378:6: port ';'
		{
		pushFollow(FOLLOW_port_in_synpred19_Reflex602);
		port();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred19_Reflex604); 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:379:6: ( pull ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:379:6: pull ';'
		{
		pushFollow(FOLLOW_pull_in_synpred20_Reflex615);
		pull();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred20_Reflex617); 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:380:6: ( metapull ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:380:6: metapull ';'
		{
		pushFollow(FOLLOW_metapull_in_synpred21_Reflex628);
		metapull();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred21_Reflex630); 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:381:6: ( push ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:381:6: push ';'
		{
		pushFollow(FOLLOW_push_in_synpred22_Reflex641);
		push();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred22_Reflex643); if (state.failed) return;

		}

	}
	// $ANTLR end synpred22_Reflex

	// $ANTLR start synpred23_Reflex
	public final void synpred23_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:382:6: ( patchStatement )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:382:6: patchStatement
		{
		pushFollow(FOLLOW_patchStatement_in_synpred23_Reflex654);
		patchStatement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred23_Reflex

	// $ANTLR start synpred24_Reflex
	public final void synpred24_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:383:6: ( functionCall ';' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:383:6: functionCall ';'
		{
		pushFollow(FOLLOW_functionCall_in_synpred24_Reflex661);
		functionCall();
		state._fsp--;
		if (state.failed) return;

		match(input,SColon,FOLLOW_SColon_in_synpred24_Reflex663); if (state.failed) return;

		}

	}
	// $ANTLR end synpred24_Reflex

	// $ANTLR start synpred40_Reflex
	public final void synpred40_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:436:5: ( expression '<-->' Identifier '{' block '}' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:436:5: expression '<-->' Identifier '{' block '}'
		{
		pushFollow(FOLLOW_expression_in_synpred40_Reflex1088);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Patch,FOLLOW_Patch_in_synpred40_Reflex1090); if (state.failed) return;

		match(input,Identifier,FOLLOW_Identifier_in_synpred40_Reflex1092); if (state.failed) return;

		match(input,OBrace,FOLLOW_OBrace_in_synpred40_Reflex1094); if (state.failed) return;

		pushFollow(FOLLOW_block_in_synpred40_Reflex1096);
		block();
		state._fsp--;
		if (state.failed) return;

		match(input,CBrace,FOLLOW_CBrace_in_synpred40_Reflex1098); if (state.failed) return;

		}

	}
	// $ANTLR end synpred40_Reflex

	// $ANTLR start synpred142_Reflex
	public final void synpred142_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:13: ( elseIfStat )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:13: elseIfStat
		{
		pushFollow(FOLLOW_elseIfStat_in_synpred142_Reflex4426);
		elseIfStat();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred142_Reflex

	// $ANTLR start synpred143_Reflex
	public final void synpred143_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:25: ( elseStat )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:25: elseStat
		{
		pushFollow(FOLLOW_elseStat_in_synpred143_Reflex4429);
		elseStat();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred143_Reflex

	// $ANTLR start synpred144_Reflex
	public final void synpred144_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:35: ( End )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:574:35: End
		{
		match(input,End,FOLLOW_End_in_synpred144_Reflex4432); if (state.failed) return;

		}

	}
	// $ANTLR end synpred144_Reflex

	// $ANTLR start synpred145_Reflex
	public final void synpred145_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:6: ( If expression Do block )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:578:6: If expression Do block
		{
		match(input,If,FOLLOW_If_in_synpred145_Reflex4462); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred145_Reflex4464);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Do,FOLLOW_Do_in_synpred145_Reflex4466); if (state.failed) return;

		pushFollow(FOLLOW_block_in_synpred145_Reflex4468);
		block();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred145_Reflex

	// $ANTLR start synpred146_Reflex
	public final void synpred146_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:583:6: ( Else If expression Do block )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:583:6: Else If expression Do block
		{
		match(input,Else,FOLLOW_Else_in_synpred146_Reflex4520); if (state.failed) return;

		match(input,If,FOLLOW_If_in_synpred146_Reflex4522); if (state.failed) return;

		pushFollow(FOLLOW_expression_in_synpred146_Reflex4524);
		expression();
		state._fsp--;
		if (state.failed) return;

		match(input,Do,FOLLOW_Do_in_synpred146_Reflex4526); if (state.failed) return;

		pushFollow(FOLLOW_block_in_synpred146_Reflex4528);
		block();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred146_Reflex

	// $ANTLR start synpred149_Reflex
	public final void synpred149_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:37: ( '{' )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:593:37: '{'
		{
		match(input,OBrace,FOLLOW_OBrace_in_synpred149_Reflex4641); if (state.failed) return;

		}

	}
	// $ANTLR end synpred149_Reflex

	// $ANTLR start synpred197_Reflex
	public final void synpred197_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:6: ( functionCall ( indexes )? )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:6: functionCall ( indexes )?
		{
		pushFollow(FOLLOW_functionCall_in_synpred197_Reflex5835);
		functionCall();
		state._fsp--;
		if (state.failed) return;

		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:19: ( indexes )?
		int alt98=2;
		int LA98_0 = input.LA(1);
		if ( (LA98_0==OBracket) ) {
			alt98=1;
		}
		switch (alt98) {
			case 1 :
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:750:19: indexes
				{
				pushFollow(FOLLOW_indexes_in_synpred197_Reflex5837);
				indexes();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred197_Reflex

	// $ANTLR start synpred199_Reflex
	public final void synpred199_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:752:6: ( Identifier rangeindex )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:752:6: Identifier rangeindex
		{
		match(input,Identifier,FOLLOW_Identifier_in_synpred199_Reflex5887); if (state.failed) return;

		pushFollow(FOLLOW_rangeindex_in_synpred199_Reflex5889);
		rangeindex();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred199_Reflex

	// $ANTLR start synpred200_Reflex
	public final void synpred200_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:753:6: ( DottedIdentifier rangeindex )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:753:6: DottedIdentifier rangeindex
		{
		match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_synpred200_Reflex5913); if (state.failed) return;

		pushFollow(FOLLOW_rangeindex_in_synpred200_Reflex5915);
		rangeindex();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred200_Reflex

	// $ANTLR start synpred206_Reflex
	public final void synpred206_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:6: ( DottedIdentifier ( indexes )? )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:6: DottedIdentifier ( indexes )?
		{
		match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_synpred206_Reflex6003); if (state.failed) return;

		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:23: ( indexes )?
		int alt101=2;
		int LA101_0 = input.LA(1);
		if ( (LA101_0==OBracket) ) {
			alt101=1;
		}
		switch (alt101) {
			case 1 :
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:756:23: indexes
				{
				pushFollow(FOLLOW_indexes_in_synpred206_Reflex6005);
				indexes();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred206_Reflex

	// $ANTLR start synpred208_Reflex
	public final void synpred208_Reflex_fragment() throws RecognitionException {
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:6: ( Identifier ( indexes )? )
		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:6: Identifier ( indexes )?
		{
		match(input,Identifier,FOLLOW_Identifier_in_synpred208_Reflex6027); if (state.failed) return;

		// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:17: ( indexes )?
		int alt102=2;
		int LA102_0 = input.LA(1);
		if ( (LA102_0==OBracket) ) {
			alt102=1;
		}
		switch (alt102) {
			case 1 :
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/Reflex.g:757:17: indexes
				{
				pushFollow(FOLLOW_indexes_in_synpred208_Reflex6029);
				indexes();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred208_Reflex

	// Delegated rules

	public final boolean synpred146_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred146_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 synpred142_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred142_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 synpred40_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred40_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 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 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 synpred197_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred197_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 synpred145_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred145_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 synpred143_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred143_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 synpred16_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred16_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 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 synpred206_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred206_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 synpred208_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred208_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 synpred200_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred200_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 synpred144_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred144_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 synpred23_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred23_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 synpred24_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred24_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 synpred149_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred149_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 synpred199_Reflex() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred199_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;
	}


	protected DFA4 dfa4 = new DFA4(this);
	protected DFA6 dfa6 = new DFA6(this);
	protected DFA13 dfa13 = new DFA13(this);
	protected DFA41 dfa41 = new DFA41(this);
	protected DFA74 dfa74 = new DFA74(this);
	static final String DFA4_eotS =
		"\170\uffff";
	static final String DFA4_eofS =
		"\1\1\167\uffff";
	static final String DFA4_minS =
		"\1\6\5\uffff\157\0\3\uffff";
	static final String DFA4_maxS =
		"\1\u00c7\5\uffff\157\0\3\uffff";
	static final String DFA4_acceptS =
		"\1\uffff\1\4\163\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\3\uffff}>";
	static final String[] DFA4_transitionS = {
			"\1\112\1\uffff\1\111\1\60\1\41\1\uffff\1\120\1\121\1\uffff\1\122\1\46"+
			"\1\47\2\uffff\1\17\1\153\1\1\4\uffff\1\136\1\35\1\37\1\uffff\1\125\1"+
			"\70\1\30\3\uffff\1\6\1\154\1\67\1\uffff\1\31\1\50\1\163\1\133\1\57\1"+
			"\63\3\uffff\1\10\1\114\4\uffff\2\1\1\uffff\1\51\1\13\1\162\4\uffff\1"+
			"\56\1\107\1\110\1\156\1\74\1\102\2\uffff\1\140\1\141\1\100\1\34\1\33"+
			"\1\36\7\uffff\1\7\1\155\1\11\2\uffff\1\15\1\54\1\55\1\65\1\101\3\uffff"+
			"\1\143\1\26\4\uffff\1\135\1\16\1\uffff\1\105\2\uffff\1\106\1\130\1\75"+
			"\1\73\1\76\1\53\4\uffff\1\137\1\20\1\14\1\145\1\21\1\150\4\uffff\1\157"+
			"\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\4\uffff"+
			"\1\126\1\25\1\127\1\27\1\uffff\1\132\1\116\1\115\1\146\1\164\1\12\1\62"+
			"\1\123\1\uffff\1\113\1\142\1\152\1\32\1\71\1\uffff\1\45\1\161\1\40\1"+
			"\uffff\1\66\1\104\1\103\1\uffff\1\117\1\72\1\124\1\160",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred13_Reflex()) ) {s = 117;}
						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 ( (synpred14_Reflex()) ) {s = 118;}
						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 ( (synpred15_Reflex()) ) {s = 119;}
						else if ( (true) ) {s = 1;}
						 
						input.seek(index4_116);
						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 =
		"\163\uffff";
	static final String DFA6_eofS =
		"\163\uffff";
	static final String DFA6_minS =
		"\1\6\1\uffff\2\0\1\uffff\137\0\17\uffff";
	static final String DFA6_maxS =
		"\1\u00c7\1\uffff\2\0\1\uffff\137\0\17\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\4\1\5\1\6\1\7\1\10";
	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\17\uffff}>";
	static final String[] DFA6_transitionS = {
			"\1\105\1\uffff\1\104\1\53\1\34\1\uffff\1\113\1\114\1\uffff\1\115\1\41"+
			"\1\42\2\uffff\1\12\1\146\5\uffff\1\131\1\30\1\32\1\uffff\1\120\1\63\1"+
			"\23\3\uffff\1\1\1\147\1\62\1\uffff\1\24\1\43\1\uffff\1\126\1\52\1\56"+
			"\3\uffff\1\3\1\107\7\uffff\1\44\1\6\1\155\4\uffff\1\51\1\102\1\103\1"+
			"\151\1\67\1\75\2\uffff\1\133\1\134\1\73\1\27\1\26\1\31\7\uffff\1\2\1"+
			"\150\1\4\2\uffff\1\10\1\47\1\50\1\60\1\74\3\uffff\1\136\1\21\4\uffff"+
			"\1\130\1\11\1\uffff\1\100\2\uffff\1\101\1\123\1\70\1\66\1\71\1\46\4\uffff"+
			"\1\132\1\13\1\7\1\140\1\14\1\143\4\uffff\1\152\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\4\uffff\1\121\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\uffff"+
			"\1\106\1\135\1\145\1\25\1\64\1\uffff\1\40\1\154\1\33\1\uffff\1\61\1\77"+
			"\1\76\1\uffff\1\112\1\65\1\117\1\153",
			"",
			"\1\uffff",
			"\1\uffff",
			"",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"\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 | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement | exportStatement );";
		}
		@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 ( (synpred17_Reflex()) ) {s = 1;}
						else if ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred20_Reflex()) ) {s = 110;}
						else if ( (synpred21_Reflex()) ) {s = 111;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred17_Reflex()) ) {s = 1;}
						else if ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						else if ( (synpred24_Reflex()) ) {s = 114;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 ( (synpred19_Reflex()) ) {s = 100;}
						else if ( (synpred22_Reflex()) ) {s = 112;}
						else if ( (synpred23_Reflex()) ) {s = 113;}
						 
						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 DFA13_eotS =
		"\144\uffff";
	static final String DFA13_eofS =
		"\144\uffff";
	static final String DFA13_minS =
		"\1\6\141\0\2\uffff";
	static final String DFA13_maxS =
		"\1\u00c6\141\0\2\uffff";
	static final String DFA13_acceptS =
		"\142\uffff\1\1\1\2";
	static final String DFA13_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[] DFA13_transitionS = {
			"\1\103\1\uffff\1\102\1\51\1\32\1\uffff\1\111\1\112\1\uffff\1\113\1\37"+
			"\1\40\2\uffff\1\6\6\uffff\1\127\1\24\1\26\1\uffff\1\116\1\61\1\17\5\uffff"+
			"\1\60\1\uffff\1\20\1\41\1\uffff\1\124\1\50\1\54\3\uffff\1\30\1\105\7"+
			"\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\7\uffff\1\27\4\uffff\1\4\1\45\1\46\1\56"+
			"\1\72\3\uffff\1\134\1\15\4\uffff\1\126\1\5\1\uffff\1\76\2\uffff\1\77"+
			"\1\121\1\66\1\64\1\67\1\44\4\uffff\1\130\1\7\1\3\1\136\1\10\1\141\12"+
			"\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\4\uffff\1"+
			"\117\1\14\1\120\1\16\1\uffff\1\123\1\107\1\106\1\137\1\uffff\1\1\1\53"+
			"\1\114\1\uffff\1\104\1\133\1\uffff\1\21\1\62\1\uffff\1\36\1\uffff\1\31"+
			"\1\uffff\1\57\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[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
	static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
	static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
	static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
	static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
	static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
	static final short[][] DFA13_transition;

	static {
		int numStates = DFA13_transitionS.length;
		DFA13_transition = new short[numStates][];
		for (int i=0; i' 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 LA13_1 = input.LA(1);
						 
						int index13_1 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_1);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA13_2 = input.LA(1);
						 
						int index13_2 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_2);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA13_3 = input.LA(1);
						 
						int index13_3 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_3);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA13_4 = input.LA(1);
						 
						int index13_4 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_4);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA13_5 = input.LA(1);
						 
						int index13_5 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_5);
						if ( s>=0 ) return s;
						break;

					case 5 : 
						int LA13_6 = input.LA(1);
						 
						int index13_6 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_6);
						if ( s>=0 ) return s;
						break;

					case 6 : 
						int LA13_7 = input.LA(1);
						 
						int index13_7 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_7);
						if ( s>=0 ) return s;
						break;

					case 7 : 
						int LA13_8 = input.LA(1);
						 
						int index13_8 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_8);
						if ( s>=0 ) return s;
						break;

					case 8 : 
						int LA13_9 = input.LA(1);
						 
						int index13_9 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_9);
						if ( s>=0 ) return s;
						break;

					case 9 : 
						int LA13_10 = input.LA(1);
						 
						int index13_10 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_10);
						if ( s>=0 ) return s;
						break;

					case 10 : 
						int LA13_11 = input.LA(1);
						 
						int index13_11 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_11);
						if ( s>=0 ) return s;
						break;

					case 11 : 
						int LA13_12 = input.LA(1);
						 
						int index13_12 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_12);
						if ( s>=0 ) return s;
						break;

					case 12 : 
						int LA13_13 = input.LA(1);
						 
						int index13_13 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_13);
						if ( s>=0 ) return s;
						break;

					case 13 : 
						int LA13_14 = input.LA(1);
						 
						int index13_14 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_14);
						if ( s>=0 ) return s;
						break;

					case 14 : 
						int LA13_15 = input.LA(1);
						 
						int index13_15 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_15);
						if ( s>=0 ) return s;
						break;

					case 15 : 
						int LA13_16 = input.LA(1);
						 
						int index13_16 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_16);
						if ( s>=0 ) return s;
						break;

					case 16 : 
						int LA13_17 = input.LA(1);
						 
						int index13_17 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_17);
						if ( s>=0 ) return s;
						break;

					case 17 : 
						int LA13_18 = input.LA(1);
						 
						int index13_18 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_18);
						if ( s>=0 ) return s;
						break;

					case 18 : 
						int LA13_19 = input.LA(1);
						 
						int index13_19 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_19);
						if ( s>=0 ) return s;
						break;

					case 19 : 
						int LA13_20 = input.LA(1);
						 
						int index13_20 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_20);
						if ( s>=0 ) return s;
						break;

					case 20 : 
						int LA13_21 = input.LA(1);
						 
						int index13_21 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_21);
						if ( s>=0 ) return s;
						break;

					case 21 : 
						int LA13_22 = input.LA(1);
						 
						int index13_22 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_22);
						if ( s>=0 ) return s;
						break;

					case 22 : 
						int LA13_23 = input.LA(1);
						 
						int index13_23 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_23);
						if ( s>=0 ) return s;
						break;

					case 23 : 
						int LA13_24 = input.LA(1);
						 
						int index13_24 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_24);
						if ( s>=0 ) return s;
						break;

					case 24 : 
						int LA13_25 = input.LA(1);
						 
						int index13_25 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_25);
						if ( s>=0 ) return s;
						break;

					case 25 : 
						int LA13_26 = input.LA(1);
						 
						int index13_26 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_26);
						if ( s>=0 ) return s;
						break;

					case 26 : 
						int LA13_27 = input.LA(1);
						 
						int index13_27 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_27);
						if ( s>=0 ) return s;
						break;

					case 27 : 
						int LA13_28 = input.LA(1);
						 
						int index13_28 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_28);
						if ( s>=0 ) return s;
						break;

					case 28 : 
						int LA13_29 = input.LA(1);
						 
						int index13_29 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_29);
						if ( s>=0 ) return s;
						break;

					case 29 : 
						int LA13_30 = input.LA(1);
						 
						int index13_30 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_30);
						if ( s>=0 ) return s;
						break;

					case 30 : 
						int LA13_31 = input.LA(1);
						 
						int index13_31 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_31);
						if ( s>=0 ) return s;
						break;

					case 31 : 
						int LA13_32 = input.LA(1);
						 
						int index13_32 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_32);
						if ( s>=0 ) return s;
						break;

					case 32 : 
						int LA13_33 = input.LA(1);
						 
						int index13_33 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_33);
						if ( s>=0 ) return s;
						break;

					case 33 : 
						int LA13_34 = input.LA(1);
						 
						int index13_34 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_34);
						if ( s>=0 ) return s;
						break;

					case 34 : 
						int LA13_35 = input.LA(1);
						 
						int index13_35 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_35);
						if ( s>=0 ) return s;
						break;

					case 35 : 
						int LA13_36 = input.LA(1);
						 
						int index13_36 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_36);
						if ( s>=0 ) return s;
						break;

					case 36 : 
						int LA13_37 = input.LA(1);
						 
						int index13_37 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_37);
						if ( s>=0 ) return s;
						break;

					case 37 : 
						int LA13_38 = input.LA(1);
						 
						int index13_38 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_38);
						if ( s>=0 ) return s;
						break;

					case 38 : 
						int LA13_39 = input.LA(1);
						 
						int index13_39 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_39);
						if ( s>=0 ) return s;
						break;

					case 39 : 
						int LA13_40 = input.LA(1);
						 
						int index13_40 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_40);
						if ( s>=0 ) return s;
						break;

					case 40 : 
						int LA13_41 = input.LA(1);
						 
						int index13_41 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_41);
						if ( s>=0 ) return s;
						break;

					case 41 : 
						int LA13_42 = input.LA(1);
						 
						int index13_42 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_42);
						if ( s>=0 ) return s;
						break;

					case 42 : 
						int LA13_43 = input.LA(1);
						 
						int index13_43 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_43);
						if ( s>=0 ) return s;
						break;

					case 43 : 
						int LA13_44 = input.LA(1);
						 
						int index13_44 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_44);
						if ( s>=0 ) return s;
						break;

					case 44 : 
						int LA13_45 = input.LA(1);
						 
						int index13_45 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_45);
						if ( s>=0 ) return s;
						break;

					case 45 : 
						int LA13_46 = input.LA(1);
						 
						int index13_46 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_46);
						if ( s>=0 ) return s;
						break;

					case 46 : 
						int LA13_47 = input.LA(1);
						 
						int index13_47 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_47);
						if ( s>=0 ) return s;
						break;

					case 47 : 
						int LA13_48 = input.LA(1);
						 
						int index13_48 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_48);
						if ( s>=0 ) return s;
						break;

					case 48 : 
						int LA13_49 = input.LA(1);
						 
						int index13_49 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_49);
						if ( s>=0 ) return s;
						break;

					case 49 : 
						int LA13_50 = input.LA(1);
						 
						int index13_50 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_50);
						if ( s>=0 ) return s;
						break;

					case 50 : 
						int LA13_51 = input.LA(1);
						 
						int index13_51 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_51);
						if ( s>=0 ) return s;
						break;

					case 51 : 
						int LA13_52 = input.LA(1);
						 
						int index13_52 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_52);
						if ( s>=0 ) return s;
						break;

					case 52 : 
						int LA13_53 = input.LA(1);
						 
						int index13_53 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_53);
						if ( s>=0 ) return s;
						break;

					case 53 : 
						int LA13_54 = input.LA(1);
						 
						int index13_54 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_54);
						if ( s>=0 ) return s;
						break;

					case 54 : 
						int LA13_55 = input.LA(1);
						 
						int index13_55 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_55);
						if ( s>=0 ) return s;
						break;

					case 55 : 
						int LA13_56 = input.LA(1);
						 
						int index13_56 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_56);
						if ( s>=0 ) return s;
						break;

					case 56 : 
						int LA13_57 = input.LA(1);
						 
						int index13_57 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_57);
						if ( s>=0 ) return s;
						break;

					case 57 : 
						int LA13_58 = input.LA(1);
						 
						int index13_58 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_58);
						if ( s>=0 ) return s;
						break;

					case 58 : 
						int LA13_59 = input.LA(1);
						 
						int index13_59 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_59);
						if ( s>=0 ) return s;
						break;

					case 59 : 
						int LA13_60 = input.LA(1);
						 
						int index13_60 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_60);
						if ( s>=0 ) return s;
						break;

					case 60 : 
						int LA13_61 = input.LA(1);
						 
						int index13_61 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_61);
						if ( s>=0 ) return s;
						break;

					case 61 : 
						int LA13_62 = input.LA(1);
						 
						int index13_62 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_62);
						if ( s>=0 ) return s;
						break;

					case 62 : 
						int LA13_63 = input.LA(1);
						 
						int index13_63 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_63);
						if ( s>=0 ) return s;
						break;

					case 63 : 
						int LA13_64 = input.LA(1);
						 
						int index13_64 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_64);
						if ( s>=0 ) return s;
						break;

					case 64 : 
						int LA13_65 = input.LA(1);
						 
						int index13_65 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_65);
						if ( s>=0 ) return s;
						break;

					case 65 : 
						int LA13_66 = input.LA(1);
						 
						int index13_66 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_66);
						if ( s>=0 ) return s;
						break;

					case 66 : 
						int LA13_67 = input.LA(1);
						 
						int index13_67 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_67);
						if ( s>=0 ) return s;
						break;

					case 67 : 
						int LA13_68 = input.LA(1);
						 
						int index13_68 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_68);
						if ( s>=0 ) return s;
						break;

					case 68 : 
						int LA13_69 = input.LA(1);
						 
						int index13_69 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_69);
						if ( s>=0 ) return s;
						break;

					case 69 : 
						int LA13_70 = input.LA(1);
						 
						int index13_70 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_70);
						if ( s>=0 ) return s;
						break;

					case 70 : 
						int LA13_71 = input.LA(1);
						 
						int index13_71 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_71);
						if ( s>=0 ) return s;
						break;

					case 71 : 
						int LA13_72 = input.LA(1);
						 
						int index13_72 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_72);
						if ( s>=0 ) return s;
						break;

					case 72 : 
						int LA13_73 = input.LA(1);
						 
						int index13_73 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_73);
						if ( s>=0 ) return s;
						break;

					case 73 : 
						int LA13_74 = input.LA(1);
						 
						int index13_74 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_74);
						if ( s>=0 ) return s;
						break;

					case 74 : 
						int LA13_75 = input.LA(1);
						 
						int index13_75 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_75);
						if ( s>=0 ) return s;
						break;

					case 75 : 
						int LA13_76 = input.LA(1);
						 
						int index13_76 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_76);
						if ( s>=0 ) return s;
						break;

					case 76 : 
						int LA13_77 = input.LA(1);
						 
						int index13_77 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_77);
						if ( s>=0 ) return s;
						break;

					case 77 : 
						int LA13_78 = input.LA(1);
						 
						int index13_78 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_78);
						if ( s>=0 ) return s;
						break;

					case 78 : 
						int LA13_79 = input.LA(1);
						 
						int index13_79 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_79);
						if ( s>=0 ) return s;
						break;

					case 79 : 
						int LA13_80 = input.LA(1);
						 
						int index13_80 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_80);
						if ( s>=0 ) return s;
						break;

					case 80 : 
						int LA13_81 = input.LA(1);
						 
						int index13_81 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_81);
						if ( s>=0 ) return s;
						break;

					case 81 : 
						int LA13_82 = input.LA(1);
						 
						int index13_82 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_82);
						if ( s>=0 ) return s;
						break;

					case 82 : 
						int LA13_83 = input.LA(1);
						 
						int index13_83 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_83);
						if ( s>=0 ) return s;
						break;

					case 83 : 
						int LA13_84 = input.LA(1);
						 
						int index13_84 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_84);
						if ( s>=0 ) return s;
						break;

					case 84 : 
						int LA13_85 = input.LA(1);
						 
						int index13_85 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_85);
						if ( s>=0 ) return s;
						break;

					case 85 : 
						int LA13_86 = input.LA(1);
						 
						int index13_86 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_86);
						if ( s>=0 ) return s;
						break;

					case 86 : 
						int LA13_87 = input.LA(1);
						 
						int index13_87 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_87);
						if ( s>=0 ) return s;
						break;

					case 87 : 
						int LA13_88 = input.LA(1);
						 
						int index13_88 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_88);
						if ( s>=0 ) return s;
						break;

					case 88 : 
						int LA13_89 = input.LA(1);
						 
						int index13_89 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_89);
						if ( s>=0 ) return s;
						break;

					case 89 : 
						int LA13_90 = input.LA(1);
						 
						int index13_90 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_90);
						if ( s>=0 ) return s;
						break;

					case 90 : 
						int LA13_91 = input.LA(1);
						 
						int index13_91 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_91);
						if ( s>=0 ) return s;
						break;

					case 91 : 
						int LA13_92 = input.LA(1);
						 
						int index13_92 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_92);
						if ( s>=0 ) return s;
						break;

					case 92 : 
						int LA13_93 = input.LA(1);
						 
						int index13_93 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_93);
						if ( s>=0 ) return s;
						break;

					case 93 : 
						int LA13_94 = input.LA(1);
						 
						int index13_94 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_94);
						if ( s>=0 ) return s;
						break;

					case 94 : 
						int LA13_95 = input.LA(1);
						 
						int index13_95 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_95);
						if ( s>=0 ) return s;
						break;

					case 95 : 
						int LA13_96 = input.LA(1);
						 
						int index13_96 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_96);
						if ( s>=0 ) return s;
						break;

					case 96 : 
						int LA13_97 = input.LA(1);
						 
						int index13_97 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred40_Reflex()) ) {s = 98;}
						else if ( (true) ) {s = 99;}
						 
						input.seek(index13_97);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 13, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA41_eotS =
		"\163\uffff";
	static final String DFA41_eofS =
		"\163\uffff";
	static final String DFA41_minS =
		"\1\6\1\0\161\uffff";
	static final String DFA41_maxS =
		"\1\u00c7\1\0\161\uffff";
	static final String DFA41_acceptS =
		"\2\uffff\1\2\157\uffff\1\1";
	static final String DFA41_specialS =
		"\1\uffff\1\0\161\uffff}>";
	static final String[] DFA41_transitionS = {
			"\1\2\1\uffff\3\2\1\uffff\2\2\1\uffff\3\2\2\uffff\3\2\4\uffff\3\2\1\uffff"+
			"\3\2\3\uffff\3\2\1\uffff\6\2\3\uffff\2\2\5\uffff\1\2\1\uffff\3\2\4\uffff"+
			"\6\2\2\uffff\6\2\7\uffff\3\2\2\uffff\5\2\3\uffff\2\2\4\uffff\2\2\1\uffff"+
			"\1\2\2\uffff\6\2\4\uffff\3\2\1\1\2\2\4\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\10\2\4\uffff\4\2\1\uffff"+
			"\10\2\1\uffff\5\2\1\uffff\3\2\1\uffff\3\2\1\uffff\4\2",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA41_eot = DFA.unpackEncodedString(DFA41_eotS);
	static final short[] DFA41_eof = DFA.unpackEncodedString(DFA41_eofS);
	static final char[] DFA41_min = DFA.unpackEncodedStringToUnsignedChars(DFA41_minS);
	static final char[] DFA41_max = DFA.unpackEncodedStringToUnsignedChars(DFA41_maxS);
	static final short[] DFA41_accept = DFA.unpackEncodedString(DFA41_acceptS);
	static final short[] DFA41_special = DFA.unpackEncodedString(DFA41_specialS);
	static final short[][] DFA41_transition;

	static {
		int numStates = DFA41_transitionS.length;
		DFA41_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(), 41, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	static final String DFA74_eotS =
		"\137\uffff";
	static final String DFA74_eofS =
		"\137\uffff";
	static final String DFA74_minS =
		"\1\6\16\uffff\2\0\116\uffff";
	static final String DFA74_maxS =
		"\1\u00c6\16\uffff\2\0\116\uffff";
	static final String DFA74_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 DFA74_specialS =
		"\17\uffff\1\0\1\1\116\uffff}>";
	static final String[] DFA74_transitionS = {
			"\1\1\1\uffff\3\1\1\uffff\2\1\1\uffff\3\1\11\uffff\3\1\1\uffff\3\1\5\uffff"+
			"\1\1\1\uffff\2\1\1\uffff\3\1\3\uffff\1\20\1\1\7\uffff\1\1\6\uffff\3\1"+
			"\1\uffff\2\1\2\uffff\6\1\7\uffff\1\17\5\uffff\4\1\3\uffff\2\1\4\uffff"+
			"\1\1\2\uffff\1\1\2\uffff\6\1\4\uffff\1\1\2\uffff\1\127\1\126\1\132\12"+
			"\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\4\uffff\4\1\1\uffff\3\1\1\130\2\uffff\2\1\1\uffff"+
			"\2\1\1\uffff\2\1\1\uffff\1\1\1\uffff\1\1\1\uffff\3\1\1\uffff\3\1",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\uffff",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA74_eot = DFA.unpackEncodedString(DFA74_eotS);
	static final short[] DFA74_eof = DFA.unpackEncodedString(DFA74_eofS);
	static final char[] DFA74_min = DFA.unpackEncodedStringToUnsignedChars(DFA74_minS);
	static final char[] DFA74_max = DFA.unpackEncodedStringToUnsignedChars(DFA74_maxS);
	static final short[] DFA74_accept = DFA.unpackEncodedString(DFA74_acceptS);
	static final short[] DFA74_special = DFA.unpackEncodedString(DFA74_specialS);
	static final short[][] DFA74_transition;

	static {
		int numStates = DFA74_transitionS.length;
		DFA74_transition = new short[numStates][];
		for (int i=0; i ^( 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 LA74_15 = input.LA(1);
						 
						int index74_15 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred197_Reflex()) ) {s = 1;}
						else if ( (synpred199_Reflex()) ) {s = 91;}
						else if ( (synpred208_Reflex()) ) {s = 92;}
						 
						input.seek(index74_15);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA74_16 = input.LA(1);
						 
						int index74_16 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred197_Reflex()) ) {s = 1;}
						else if ( (synpred200_Reflex()) ) {s = 93;}
						else if ( (synpred206_Reflex()) ) {s = 94;}
						 
						input.seek(index74_16);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 74, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	public static final BitSet FOLLOW_metaBlock_in_parse320 = new BitSet(new long[]{0x380C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_mainBlock_in_parse323 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_210_in_metaBlock336 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_metaBlock338 = new BitSet(new long[]{0x0200000000000000L,0x0000000000000000L,0x0000000400000000L,0x0000000000600000L});
	public static final BitSet FOLLOW_metaStatement_in_metaBlock340 = new BitSet(new long[]{0x0200000000000000L,0x0000000000000000L,0x0000000400000000L,0x0000000000600000L});
	public static final BitSet FOLLOW_End_in_metaBlock343 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_213_in_metaStatement360 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_String_in_metaStatement365 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement367 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L,0x0000000000000000L,0x00000000008A0000L});
	public static final BitSet FOLLOW_set_in_metaStatement371 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement387 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_String_in_metaStatement391 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000003800L});
	public static final BitSet FOLLOW_set_in_metaStatement399 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement413 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_String_in_metaStatement417 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_metaStatement419 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Return_in_metaStatement427 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L,0x0000000000000000L,0x00000000008A0000L});
	public static final BitSet FOLLOW_set_in_metaStatement431 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement447 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_String_in_metaStatement451 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_metaStatement453 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_214_in_metaStatement461 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_String_in_metaStatement465 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_metaStatement467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_String_in_metaStatement471 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_metaStatement473 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_block_in_mainBlock489 = new BitSet(new long[]{0x0000000000000000L});
	public static final BitSet FOLLOW_EOF_in_mainBlock491 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_statement_in_block511 = new BitSet(new long[]{0x380C7EE3B833B742L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_functionDecl_in_block515 = new BitSet(new long[]{0x380C7EE3B833B742L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_structureDecl_in_block519 = new BitSet(new long[]{0x380C7EE3B833B742L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_Return_in_block526 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_block528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_block530 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assignment_in_statement574 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement576 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_importStatement_in_statement589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement591 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_port_in_statement602 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement604 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pull_in_statement615 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement617 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_metapull_in_statement628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement630 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_push_in_statement641 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement643 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_patchStatement_in_statement654 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_statement661 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_throwStatement_in_statement674 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement676 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_breakStatement_in_statement687 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement689 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_continueStatement_in_statement700 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_statement702 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ifStatement_in_statement713 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_forStatement_in_statement720 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pforStatement_in_statement727 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_whileStatement_in_statement734 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_guardedStatement_in_statement741 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_exportStatement_in_statement748 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Export_in_exportStatement774 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_exportStatement776 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_exportStatement780 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_exportStatement782 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Const_in_assignment812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_assignment814 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_Assign_in_assignment816 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_assignment818 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_assignment845 = new BitSet(new long[]{0x0000000000000800L,0x4000000000000000L});
	public static final BitSet FOLLOW_DottedIdentifier_in_assignment849 = new BitSet(new long[]{0x0000000000000800L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_assignment852 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_Assign_in_assignment855 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_assignment857 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_assignment887 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
	public static final BitSet FOLLOW_200_in_assignment889 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_assignment891 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Break_in_breakStatement920 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Continue_in_continueStatement937 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Import_in_importStatement954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_importStatement958 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000001008000L});
	public static final BitSet FOLLOW_207_in_importStatement961 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_importStatement965 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_216_in_importStatement970 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_importStatement972 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_importStatement976 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_importStatement978 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_port1021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_PortA_in_port1023 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_port1027 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PortA_in_port1048 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_port1050 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_patchStatement1088 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
	public static final BitSet FOLLOW_Patch_in_patchStatement1090 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_patchStatement1092 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_patchStatement1094 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_patchStatement1096 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_patchStatement1098 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_patchStatement1117 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
	public static final BitSet FOLLOW_Patch_in_patchStatement1119 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_patchStatement1121 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_patchStatement1123 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_patchStatement1125 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_patchStatement1127 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_pull1153 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
	public static final BitSet FOLLOW_PullVal_in_pull1155 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_pull1157 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_metapull1186 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
	public static final BitSet FOLLOW_202_in_metapull1188 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_metapull1190 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_push1221 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
	public static final BitSet FOLLOW_PushVal_in_push1223 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_push1227 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Throw_in_throwStatement1259 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_throwStatement1261 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PackageIdentifier_in_functionCall1285 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1287 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_functionCall1289 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1292 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Println_in_functionCall1311 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1313 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1315 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1318 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Print_in_functionCall1338 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1340 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1342 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1344 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Size_in_functionCall1366 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1368 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1370 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1372 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Keys_in_functionCall1395 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1397 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1399 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1401 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Sort_in_functionCall1424 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1426 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1430 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_functionCall1432 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1436 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1438 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Collate_in_functionCall1465 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1467 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1471 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_functionCall1473 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1477 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1479 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Date_in_functionCall1503 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1505 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_functionCall1507 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1510 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Time_in_functionCall1535 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1537 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1539 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1542 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GetLine_in_functionCall1565 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1567 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1569 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1572 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GetCh_in_functionCall1592 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1594 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1596 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1599 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Capabilities_in_functionCall1621 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1623 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1625 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_HasCapability_in_functionCall1645 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1647 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1649 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1651 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Cast_in_functionCall1669 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1672 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1676 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_functionCall1678 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_functionCall1682 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1684 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_functionCall1709 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1711 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_functionCall1713 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1716 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_functionCall1735 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionCall1737 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_functionCall1739 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionCall1742 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_func2_in_functionCall1793 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_TypeOf_in_func21807 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func21809 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21811 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func21813 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Assert_in_func21834 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func21836 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21838 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func21840 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Replace_in_func21861 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func21863 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21867 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func21869 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21873 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func21875 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21879 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func21881 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RPull_in_func21906 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func21908 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21912 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func21914 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RPush_in_func21933 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func21935 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21939 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func21941 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21945 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func21948 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21952 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func21955 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Transpose_in_func21981 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func21983 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func21985 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func21987 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_B64Compress_in_func22005 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22007 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22009 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22011 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_B64Decompress_in_func22029 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22031 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22033 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22035 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Debug_in_func22053 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22055 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22057 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22059 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Evals_in_func22081 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22083 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22085 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22087 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ReadDir_in_func22109 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22111 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22113 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22115 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MkDir_in_func22135 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22137 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22139 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22141 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IsFile_in_func22163 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22165 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22167 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22169 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IsFolder_in_func22190 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22192 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22194 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22196 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_File_in_func22215 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22217 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22219 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22221 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Delete_in_func22246 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22248 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22250 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22252 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Archive_in_func22273 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22275 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22277 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22279 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Port_in_func22299 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22301 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22303 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22305 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Suspend_in_func22328 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22330 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22332 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22334 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Difference_in_func22354 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22356 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22358 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22360 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Remove_in_func22379 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22381 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func22383 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func22385 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22389 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22391 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Join_in_func22412 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22414 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22416 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22418 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Unique_in_func22443 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22445 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22447 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22449 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Copy_in_func22472 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22474 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22478 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func22480 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22484 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22486 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Close_in_func22508 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22510 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22512 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22514 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Timer_in_func22536 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22538 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22540 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22543 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Vars_in_func22566 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22568 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22570 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MergeIf_in_func22605 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22607 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22609 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22611 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Format_in_func22633 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22635 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22637 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22639 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Merge_in_func22657 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22659 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func22661 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Message_in_func22687 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22689 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22693 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func22695 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22699 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22701 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PutCache_in_func22723 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22725 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22729 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func22731 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22735 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func22738 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22742 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22746 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GetCache_in_func22772 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22774 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22778 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22780 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Json_in_func22799 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22801 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22803 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22805 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FromJson_in_func22829 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22831 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22833 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22835 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_UrlEncode_in_func22854 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22856 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22858 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22860 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_UrlDecode_in_func22879 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22881 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22883 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22885 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MD5_in_func22904 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22906 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22908 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22910 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MapFn_in_func22934 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22936 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func22938 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func22940 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22942 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22944 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FilterFn_in_func22964 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22966 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func22968 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func22970 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func22972 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func22974 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Fold_in_func22994 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func22996 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func22998 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23000 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23002 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23004 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23006 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23008 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Any_in_func23030 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23032 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func23034 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23036 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23038 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23040 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_All_in_func23060 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23062 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func23064 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23066 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23068 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23070 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_TakeWhile_in_func23090 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23092 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func23094 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23096 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23098 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23100 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DropWhile_in_func23120 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23122 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func23124 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23126 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23128 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23130 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SplitWith_in_func23150 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23152 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func23154 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23156 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23158 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23160 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Split_in_func23180 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23182 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23186 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23188 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23192 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23194 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23198 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23200 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Uuid_in_func23225 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23227 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23229 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AsyncCall_in_func23261 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23263 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23267 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func23270 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23274 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23278 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AsyncCallScript_in_func23335 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23337 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23341 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23343 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23347 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func23350 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23354 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23358 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AsyncStatus_in_func23418 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23420 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23422 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23424 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SuspendWait_in_func23449 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23451 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func23453 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23455 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Wait_in_func23474 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23476 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23480 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func23483 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23487 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23489 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23493 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23497 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Chain_in_func23558 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23560 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23564 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func23567 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23571 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23575 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Signal_in_func23632 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23634 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23638 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23640 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23644 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23646 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Sleep_in_func23702 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23705 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23707 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23709 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Matches_in_func23730 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23732 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23736 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23738 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23742 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23744 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Rand_in_func23766 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23770 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23772 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23774 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Spawn_in_func23795 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23797 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23801 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func23804 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23808 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func23810 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23814 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23818 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Defined_in_func23879 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func23883 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23885 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Round_in_func23905 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23907 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23911 = new BitSet(new long[]{0x0000000804000000L});
	public static final BitSet FOLLOW_Comma_in_func23914 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23918 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23922 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Lib_in_func23979 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func23983 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func23985 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func23987 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Call_in_func24009 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func24012 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24016 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func24018 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24022 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func24024 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24028 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func24030 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_New_in_func24089 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func24093 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24097 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func24099 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GenSchema_in_func24152 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func24154 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24158 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func24160 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GenStruct_in_func24213 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func24215 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_func24217 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func24219 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24223 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func24225 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Template_in_func24280 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func24282 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24286 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_Comma_in_func24288 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_func24292 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func24294 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_KernelIdentifier_in_func24350 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_func24352 = new BitSet(new long[]{0x180C7683BC13B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_func24354 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_func24357 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ifStat_in_ifStatement4424 = new BitSet(new long[]{0x0300000000000002L});
	public static final BitSet FOLLOW_elseIfStat_in_ifStatement4426 = new BitSet(new long[]{0x0300000000000002L});
	public static final BitSet FOLLOW_elseStat_in_ifStatement4429 = new BitSet(new long[]{0x0200000000000002L});
	public static final BitSet FOLLOW_End_in_ifStatement4432 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_ifStat4462 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_ifStat4464 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_ifStat4466 = new BitSet(new long[]{0x380C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_ifStat4468 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_ifStat4486 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_ifStat4488 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_ifStat4490 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_ifStat4492 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_ifStat4494 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseIfStat4520 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_If_in_elseIfStat4522 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_elseIfStat4524 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_elseIfStat4526 = new BitSet(new long[]{0x380C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_elseIfStat4528 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseIfStat4546 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_If_in_elseIfStat4548 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_elseIfStat4550 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_elseIfStat4552 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_elseIfStat4554 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_elseIfStat4556 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseStat4581 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_elseStat4583 = new BitSet(new long[]{0x380C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_elseStat4585 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_elseStat4601 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_elseStat4603 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_elseStat4605 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_elseStat4607 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Def_in_functionDecl4630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_functionDecl4632 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
	public static final BitSet FOLLOW_OParen_in_functionDecl4634 = new BitSet(new long[]{0x0000000004000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_idList_in_functionDecl4636 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_functionDecl4639 = new BitSet(new long[]{0x3A0C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_OBrace_in_functionDecl4641 = new BitSet(new long[]{0x3A0C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_functionDecl4644 = new BitSet(new long[]{0x0200000000400000L});
	public static final BitSet FOLLOW_set_in_functionDecl4646 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Structure_in_structureDecl4671 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_structureDecl4673 = new BitSet(new long[]{0x0002000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_set_in_structureDecl4675 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_structureMemberList_in_structureDecl4683 = new BitSet(new long[]{0x0200000000400000L});
	public static final BitSet FOLLOW_set_in_structureDecl4685 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_structureMember_in_structureMemberList4712 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_structureMember4727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L,0x0000000000894000L});
	public static final BitSet FOLLOW_structureType_in_structureMember4729 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_structureMember4731 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_objectStructureType_in_structureType4753 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_simpleStructureType_in_structureType4757 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_arrayStructureType_in_structureType4761 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Structure_in_objectStructureType4775 = new BitSet(new long[]{0x0002000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_set_in_objectStructureType4782 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_structureMemberList_in_objectStructureType4790 = new BitSet(new long[]{0x0200000000400000L});
	public static final BitSet FOLLOW_set_in_objectStructureType4792 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_206_in_arrayStructureType4812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
	public static final BitSet FOLLOW_212_in_arrayStructureType4814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000890000L});
	public static final BitSet FOLLOW_simpleStructureType_in_arrayStructureType4816 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_set_in_simpleStructureType4830 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_For_in_forStatement4857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_forStatement4859 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_Assign_in_forStatement4861 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_forStatement4863 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
	public static final BitSet FOLLOW_To_in_forStatement4865 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_forStatement4867 = new BitSet(new long[]{0x0002000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_Do_in_forStatement4871 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_forStatement4873 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_forStatement4875 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_forStatement4882 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_forStatement4884 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_forStatement4886 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_For_in_forStatement4914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_forStatement4916 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_In_in_forStatement4918 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_forStatement4920 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_forStatement4922 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_forStatement4924 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_forStatement4926 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PFor_in_pforStatement4958 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_pforStatement4960 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_Assign_in_pforStatement4962 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_pforStatement4964 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
	public static final BitSet FOLLOW_To_in_pforStatement4966 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_pforStatement4968 = new BitSet(new long[]{0x0002000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_Do_in_pforStatement4972 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_pforStatement4974 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_pforStatement4976 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_pforStatement4983 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_pforStatement4985 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_pforStatement4987 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PFor_in_pforStatement5015 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_pforStatement5017 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_In_in_pforStatement5019 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_pforStatement5021 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_pforStatement5023 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_pforStatement5025 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_pforStatement5027 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_While_in_whileStatement5059 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_whileStatement5061 = new BitSet(new long[]{0x0002000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_Do_in_whileStatement5065 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_whileStatement5067 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_whileStatement5069 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_whileStatement5075 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_whileStatement5077 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_whileStatement5079 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Try_in_guardedStatement5105 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_guardedStatement5107 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_guardedStatement5111 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_guardedStatement5113 = new BitSet(new long[]{0x0000000040000000L});
	public static final BitSet FOLLOW_Catch_in_guardedStatement5115 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_guardedStatement5117 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_guardedStatement5119 = new BitSet(new long[]{0x3A0C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_guardedStatement5123 = new BitSet(new long[]{0x0200000000000000L});
	public static final BitSet FOLLOW_End_in_guardedStatement5125 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Try_in_guardedStatement5146 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_guardedStatement5148 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_guardedStatement5152 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_guardedStatement5154 = new BitSet(new long[]{0x0000000040000000L});
	public static final BitSet FOLLOW_Catch_in_guardedStatement5156 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_guardedStatement5158 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_guardedStatement5160 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_guardedStatement5164 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_guardedStatement5166 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_idList5194 = new BitSet(new long[]{0x0000000800000002L});
	public static final BitSet FOLLOW_Comma_in_idList5197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_idList5199 = new BitSet(new long[]{0x0000000800000002L});
	public static final BitSet FOLLOW_expression_in_exprList5224 = new BitSet(new long[]{0x0000000800000002L});
	public static final BitSet FOLLOW_Comma_in_exprList5227 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_exprList5229 = new BitSet(new long[]{0x0000000800000002L});
	public static final BitSet FOLLOW_condExpr_in_expression5254 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_orExpr_in_condExpr5269 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L,0x0000000000200000L});
	public static final BitSet FOLLOW_QMark_in_condExpr5290 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_condExpr5294 = new BitSet(new long[]{0x0000000400000000L});
	public static final BitSet FOLLOW_Colon_in_condExpr5296 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_condExpr5300 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_In_in_condExpr5324 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_condExpr5326 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_andExpr_in_orExpr5378 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000001L});
	public static final BitSet FOLLOW_Or_in_orExpr5381 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_andExpr_in_orExpr5384 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000001L});
	public static final BitSet FOLLOW_equExpr_in_andExpr5400 = new BitSet(new long[]{0x0000000000000082L});
	public static final BitSet FOLLOW_And_in_andExpr5403 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_equExpr_in_andExpr5406 = new BitSet(new long[]{0x0000000000000082L});
	public static final BitSet FOLLOW_relExpr_in_equExpr5422 = new BitSet(new long[]{0x0400000000000002L,0x0200000000000000L});
	public static final BitSet FOLLOW_set_in_equExpr5425 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_relExpr_in_equExpr5434 = new BitSet(new long[]{0x0400000000000002L,0x0200000000000000L});
	public static final BitSet FOLLOW_addExpr_in_relExpr5450 = new BitSet(new long[]{0x0000000000000002L,0x0000030000000300L});
	public static final BitSet FOLLOW_set_in_relExpr5453 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_addExpr_in_relExpr5470 = new BitSet(new long[]{0x0000000000000002L,0x0000030000000300L});
	public static final BitSet FOLLOW_mulExpr_in_addExpr5486 = new BitSet(new long[]{0x0000000000000022L,0x0000000000000000L,0x0004000000000000L});
	public static final BitSet FOLLOW_set_in_addExpr5489 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_mulExpr_in_addExpr5498 = new BitSet(new long[]{0x0000000000000022L,0x0000000000000000L,0x0004000000000000L});
	public static final BitSet FOLLOW_powExpr_in_mulExpr5514 = new BitSet(new long[]{0x0001000000000002L,0x00C0000000000000L});
	public static final BitSet FOLLOW_set_in_mulExpr5517 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_powExpr_in_mulExpr5530 = new BitSet(new long[]{0x0001000000000002L,0x00C0000000000000L});
	public static final BitSet FOLLOW_unaryExpr_in_powExpr5546 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_Pow_in_powExpr5549 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_unaryExpr_in_powExpr5552 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000004000L});
	public static final BitSet FOLLOW_Subtract_in_unaryExpr5568 = new BitSet(new long[]{0x080C7683B813B740L,0xFC3F2C31F080FCDCL,0x56D9EF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_atom_in_unaryExpr5570 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Excl_in_unaryExpr5586 = new BitSet(new long[]{0x080C7683B813B740L,0xFC3F2C31F080FCDCL,0x56D9EF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_atom_in_unaryExpr5588 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_atom_in_unaryExpr5604 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Subtract_in_sparsesep5617 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_sparsematrix5628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0004000000000000L});
	public static final BitSet FOLLOW_sparsesep_in_sparsematrix5630 = new BitSet(new long[]{0x0000000000800000L,0x0000000000000000L,0x0004000000000000L});
	public static final BitSet FOLLOW_CBracket_in_sparsematrix5633 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Number_in_atom5656 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Integer_in_atom5663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Long_in_atom5670 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Bool_in_atom5677 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Null_in_atom5684 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_sparsematrix_in_atom5691 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_lookup_in_atom5698 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_list5714 = new BitSet(new long[]{0x180C7683B893B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_list5716 = new BitSet(new long[]{0x0000000000800000L});
	public static final BitSet FOLLOW_CBracket_in_list5719 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_mapdef5742 = new BitSet(new long[]{0x180C7683B853B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_keyValList_in_mapdef5744 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_mapdef5747 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_keyVal_in_keyValList5770 = new BitSet(new long[]{0x0000000800000002L});
	public static final BitSet FOLLOW_Comma_in_keyValList5773 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_keyVal_in_keyValList5775 = new BitSet(new long[]{0x0000000800000002L});
	public static final BitSet FOLLOW_expression_in_keyVal5802 = new BitSet(new long[]{0x0000000400000000L});
	public static final BitSet FOLLOW_Colon_in_keyVal5804 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_keyVal5808 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_lookup5835 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup5837 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PropertyPlaceholder_in_lookup5863 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_lookup5887 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
	public static final BitSet FOLLOW_rangeindex_in_lookup5889 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_lookup5913 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
	public static final BitSet FOLLOW_rangeindex_in_lookup5915 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_list_in_lookup5933 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup5935 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_mapdef_in_lookup5969 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup5971 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_lookup6003 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup6005 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_lookup6027 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup6029 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_String_in_lookup6057 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup6059 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_QuotedString_in_lookup6091 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup6093 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OParen_in_lookup6119 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_lookup6121 = new BitSet(new long[]{0x0000000004000000L});
	public static final BitSet FOLLOW_CParen_in_lookup6123 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_lookup6125 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBracket_in_indexes6153 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_exprList_in_indexes6155 = new BitSet(new long[]{0x0000000000800000L});
	public static final BitSet FOLLOW_CBracket_in_indexes6157 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_OBracket_in_rangeindex6182 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000277L});
	public static final BitSet FOLLOW_expression_in_rangeindex6186 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
	public static final BitSet FOLLOW_201_in_rangeindex6189 = new BitSet(new long[]{0x180C7683B893B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_rangeindex6193 = new BitSet(new long[]{0x0000000000800000L});
	public static final BitSet FOLLOW_CBracket_in_rangeindex6196 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_statement_in_synpred13_Reflex511 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionDecl_in_synpred14_Reflex515 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_structureDecl_in_synpred15_Reflex519 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Return_in_synpred16_Reflex526 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_synpred16_Reflex528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred16_Reflex530 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assignment_in_synpred17_Reflex574 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred17_Reflex576 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_port_in_synpred19_Reflex602 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred19_Reflex604 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pull_in_synpred20_Reflex615 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred20_Reflex617 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_metapull_in_synpred21_Reflex628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred21_Reflex630 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_push_in_synpred22_Reflex641 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred22_Reflex643 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_patchStatement_in_synpred23_Reflex654 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_synpred24_Reflex661 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SColon_in_synpred24_Reflex663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expression_in_synpred40_Reflex1088 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
	public static final BitSet FOLLOW_Patch_in_synpred40_Reflex1090 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_Identifier_in_synpred40_Reflex1092 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
	public static final BitSet FOLLOW_OBrace_in_synpred40_Reflex1094 = new BitSet(new long[]{0x380C7EE3B873B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_synpred40_Reflex1096 = new BitSet(new long[]{0x0000000000400000L});
	public static final BitSet FOLLOW_CBrace_in_synpred40_Reflex1098 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_elseIfStat_in_synpred142_Reflex4426 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_elseStat_in_synpred143_Reflex4429 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_End_in_synpred144_Reflex4432 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_If_in_synpred145_Reflex4462 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_synpred145_Reflex4464 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_synpred145_Reflex4466 = new BitSet(new long[]{0x380C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_synpred145_Reflex4468 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Else_in_synpred146_Reflex4520 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_If_in_synpred146_Reflex4522 = new BitSet(new long[]{0x180C7683B813B740L,0xFC3F2C31F080FCDCL,0x56DDEF0BF0939400L,0x0000000000000077L});
	public static final BitSet FOLLOW_expression_in_synpred146_Reflex4524 = new BitSet(new long[]{0x0002000000000000L});
	public static final BitSet FOLLOW_Do_in_synpred146_Reflex4526 = new BitSet(new long[]{0x380C7EE3B833B740L,0xFC3F2C31F380FCFCL,0x77DFEF0FF093B410L,0x00000000000000F7L});
	public static final BitSet FOLLOW_block_in_synpred146_Reflex4528 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OBrace_in_synpred149_Reflex4641 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_functionCall_in_synpred197_Reflex5835 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_synpred197_Reflex5837 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_synpred199_Reflex5887 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
	public static final BitSet FOLLOW_rangeindex_in_synpred199_Reflex5889 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_synpred200_Reflex5913 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
	public static final BitSet FOLLOW_rangeindex_in_synpred200_Reflex5915 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DottedIdentifier_in_synpred206_Reflex6003 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_synpred206_Reflex6005 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_Identifier_in_synpred208_Reflex6027 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_indexes_in_synpred208_Reflex6029 = new BitSet(new long[]{0x0000000000000002L});
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy