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

reflex.ReflexTreeWalker Maven / Gradle / Ivy

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

package reflex;
import java.math.*;
import java.io.PrintStream;
import reflex.function.*;
import reflex.node.*;
import reflex.node.io.*;
import reflex.node.functional.*;
import reflex.importer.*;
import reflex.debug.*;
import reflex.util.function.LanguageRegistry;
import reflex.util.*;
import reflex.value.ReflexValue;


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

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

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

	// delegators


	public ReflexTreeWalker(TreeNodeStream input) {
		this(input, new RecognizerSharedState());
	}
	public ReflexTreeWalker(TreeNodeStream input, RecognizerSharedState state) {
		super(input, state);
	}

	@Override public String[] getTokenNames() { return ReflexTreeWalker.tokenNames; }
	@Override public String getGrammarFileName() { return "/Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g"; }


	  public LanguageRegistry languageRegistry = null;
	  public Scope currentScope = null;
	  private IReflexHandler handler = new DummyReflexHandler();
	  public ImportHandler importHandler = new ImportHandler();
	  private NamespaceStack namespaceStack;

	  public ReflexTreeWalker(CommonTreeNodeStream nodes, LanguageRegistry languageRegistry) {
	    this(nodes, null, languageRegistry);
	  }

	  public ReflexTreeWalker(CommonTreeNodeStream nds, Scope sc, LanguageRegistry languageRegistry) {
	    this(nds, sc, languageRegistry, languageRegistry.getNamespaceStack());
	  }

	  public ReflexTreeWalker(CommonTreeNodeStream nds, Scope sc, LanguageRegistry languageRegistry, NamespaceStack namespaceStack) {
	    super(nds);
	    if (sc == null) {
	      currentScope = Scope.getInitialScope();
	    } else {
	      currentScope = sc;
	    }
	    this.languageRegistry = languageRegistry;
	    importHandler.setReflexHandler(handler);
	    this.namespaceStack = namespaceStack;
	  }


	  public void setReflexHandler(IReflexHandler handler) {
	  	this.handler = handler;
	  	importHandler.setReflexHandler(handler);
	  }

	  public IReflexHandler getReflexHandler() {
	  	return handler;
	  }

	  public void setImportHandler(ImportHandler importHandler) {
	     this.importHandler = importHandler;
	  }

	  public ImportHandler getImportHandler() {
	     return importHandler;
	  }

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




	// $ANTLR start "walk"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:75:1: walk returns [ReflexNode node] : ( metaBlock )? block ;
	public final ReflexNode walk() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode block1 =null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:76:3: ( ( metaBlock )? block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:76:6: ( metaBlock )? block
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:76:6: ( metaBlock )?
			int alt1=2;
			int LA1_0 = input.LA(1);
			if ( (LA1_0==METABLOCK) ) {
				alt1=1;
			}
			switch (alt1) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:76:6: metaBlock
					{
					pushFollow(FOLLOW_metaBlock_in_walk50);
					metaBlock();
					state._fsp--;

					}
					break;

			}

			pushFollow(FOLLOW_block_in_walk53);
			block1=block();
			state._fsp--;

			node = block1;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "walk"



	// $ANTLR start "metaBlock"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:80:1: metaBlock : METABLOCK ;
	public final void metaBlock() throws RecognitionException {
		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:81:3: ( METABLOCK )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:81:5: METABLOCK
			{
			match(input,METABLOCK,FOLLOW_METABLOCK_in_metaBlock69); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "metaBlock"



	// $ANTLR start "block"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:84:1: block returns [ReflexNode node] : ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) ) ;
	public final ReflexNode block() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode statement2 =null;
		ReflexNode expression3 =null;


		  CommonTree ahead = (CommonTree) input.LT(1);
		  int line = ahead.getToken().getLine();
		  Scope scope = new Scope(currentScope);
		  currentScope = scope;
		  BlockNode bn = new BlockNode(line, handler, currentScope);
		  node = bn;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:96:3: ( ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:96:6: ^( BLOCK ^( STATEMENTS ( statement )* ) ^( RETURN ( expression )? ) )
			{
			match(input,BLOCK,FOLLOW_BLOCK_in_block98); 
			match(input, Token.DOWN, null); 
			match(input,STATEMENTS,FOLLOW_STATEMENTS_in_block109); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:97:22: ( statement )*
				loop2:
				while (true) {
					int alt2=2;
					int LA2_0 = input.LA(1);
					if ( (LA2_0==ASSIGNMENT||LA2_0==BREAK||(LA2_0 >= CONSTASSIGNMENT && LA2_0 <= CONTINUE)||LA2_0==EXPORT||(LA2_0 >= FORLIST && LA2_0 <= FORTO)||LA2_0==FUNC_CALL||(LA2_0 >= IF && LA2_0 <= IMPORT)||LA2_0==KERNEL_CALL||LA2_0==MATCH||(LA2_0 >= METAPULL && LA2_0 <= MINUSASSIGNMENT)||(LA2_0 >= PATCH && LA2_0 <= PFORTO)||(LA2_0 >= PLUSASSIGNMENT && LA2_0 <= PUSH)||LA2_0==QUALIFIED_FUNC_CALL||LA2_0==SWITCH||LA2_0==Throw||LA2_0==Try||LA2_0==While) ) {
						alt2=1;
					}

					switch (alt2) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:97:23: statement
						{
						pushFollow(FOLLOW_statement_in_block112);
						statement2=statement();
						state._fsp--;

						 bn.addStatement(statement2); 
						}
						break;

					default :
						break loop2;
					}
				}

				match(input, Token.UP, null); 
			}

			match(input,RETURN,FOLLOW_RETURN_in_block129); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:98:22: ( expression )?
				int alt3=2;
				int LA3_0 = input.LA(1);
				if ( (LA3_0==Add||LA3_0==And||LA3_0==Bool||LA3_0==Divide||LA3_0==Equals||(LA3_0 >= GT && LA3_0 <= GTEquals)||LA3_0==In||LA3_0==Integer||(LA3_0 >= LOOKUP && LA3_0 <= LTEquals)||LA3_0==Long||(LA3_0 >= Modulus && LA3_0 <= NEquals)||(LA3_0 >= Null && LA3_0 <= Number)||LA3_0==Or||LA3_0==Pow||LA3_0==RANGELOOKUP||LA3_0==SPARSE||LA3_0==Subtract||LA3_0==TERNARY||LA3_0==UNARY_MIN) ) {
					alt3=1;
				}
				switch (alt3) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:98:23: expression
						{
						pushFollow(FOLLOW_expression_in_block136);
						expression3=expression();
						state._fsp--;

						 bn.addReturn(expression3);   
						}
						break;

				}

				match(input, Token.UP, null); 
			}

			match(input, Token.UP, null); 

			}


			  currentScope = currentScope.parent();

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "block"



	// $ANTLR start "exportStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:102:1: exportStatement returns [ReflexNode node] : ^( EXPORT i= Identifier b= block ) ;
	public final ReflexNode exportStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree i=null;
		ReflexNode b =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:110:3: ( ^( EXPORT i= Identifier b= block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:110:5: ^( EXPORT i= Identifier b= block )
			{
			match(input,EXPORT,FOLLOW_EXPORT_in_exportStatement177); 
			match(input, Token.DOWN, null); 
			i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_exportStatement181); 
			 namespaceStack.push((i!=null?i.getText():null));
			pushFollow(FOLLOW_block_in_exportStatement187);
			b=block();
			state._fsp--;

			match(input, Token.UP, null); 

			  node = new ExportStatementNode(line, handler, currentScope, b ); 
			}


			  namespaceStack.pop();

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "exportStatement"



	// $ANTLR start "statement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:114:1: statement returns [ReflexNode node] : ( assignment | pull | metapull | push | patchStatement | port | importStatement | exportStatement | breakStatement | continueStatement | functionCall | throwStatement | matchStatement | switchStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement );
	public final ReflexNode statement() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode assignment4 =null;
		ReflexNode pull5 =null;
		ReflexNode metapull6 =null;
		ReflexNode push7 =null;
		ReflexNode patchStatement8 =null;
		ReflexNode port9 =null;
		ReflexNode importStatement10 =null;
		ReflexNode exportStatement11 =null;
		ReflexNode breakStatement12 =null;
		ReflexNode continueStatement13 =null;
		ReflexNode functionCall14 =null;
		ReflexNode throwStatement15 =null;
		ReflexNode matchStatement16 =null;
		ReflexNode switchStatement17 =null;
		ReflexNode ifStatement18 =null;
		ReflexNode forStatement19 =null;
		ReflexNode pforStatement20 =null;
		ReflexNode whileStatement21 =null;
		ReflexNode guardedStatement22 =null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:115:3: ( assignment | pull | metapull | push | patchStatement | port | importStatement | exportStatement | breakStatement | continueStatement | functionCall | throwStatement | matchStatement | switchStatement | ifStatement | forStatement | pforStatement | whileStatement | guardedStatement )
			int alt4=19;
			switch ( input.LA(1) ) {
			case ASSIGNMENT:
			case CONSTASSIGNMENT:
			case MINUSASSIGNMENT:
			case PLUSASSIGNMENT:
				{
				alt4=1;
				}
				break;
			case PULL:
				{
				alt4=2;
				}
				break;
			case METAPULL:
				{
				alt4=3;
				}
				break;
			case PUSH:
				{
				alt4=4;
				}
				break;
			case PATCH:
				{
				alt4=5;
				}
				break;
			case PORTF:
			case PORTR:
				{
				alt4=6;
				}
				break;
			case IMPORT:
				{
				alt4=7;
				}
				break;
			case EXPORT:
				{
				alt4=8;
				}
				break;
			case BREAK:
				{
				alt4=9;
				}
				break;
			case CONTINUE:
				{
				alt4=10;
				}
				break;
			case FUNC_CALL:
			case KERNEL_CALL:
			case QUALIFIED_FUNC_CALL:
				{
				alt4=11;
				}
				break;
			case Throw:
				{
				alt4=12;
				}
				break;
			case MATCH:
				{
				alt4=13;
				}
				break;
			case SWITCH:
				{
				alt4=14;
				}
				break;
			case IF:
				{
				alt4=15;
				}
				break;
			case FORLIST:
			case FORTO:
				{
				alt4=16;
				}
				break;
			case PFORLIST:
			case PFORTO:
				{
				alt4=17;
				}
				break;
			case While:
				{
				alt4=18;
				}
				break;
			case Try:
				{
				alt4=19;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 4, 0, input);
				throw nvae;
			}
			switch (alt4) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:115:6: assignment
					{
					pushFollow(FOLLOW_assignment_in_statement209);
					assignment4=assignment();
					state._fsp--;

					 node = assignment4; 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:116:6: pull
					{
					pushFollow(FOLLOW_pull_in_statement218);
					pull5=pull();
					state._fsp--;

					 node = pull5; 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:117:6: metapull
					{
					pushFollow(FOLLOW_metapull_in_statement227);
					metapull6=metapull();
					state._fsp--;

					 node = metapull6; 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:118:6: push
					{
					pushFollow(FOLLOW_push_in_statement236);
					push7=push();
					state._fsp--;

					 node = push7; 
					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:119:6: patchStatement
					{
					pushFollow(FOLLOW_patchStatement_in_statement245);
					patchStatement8=patchStatement();
					state._fsp--;

					 node = patchStatement8; 
					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:120:6: port
					{
					pushFollow(FOLLOW_port_in_statement254);
					port9=port();
					state._fsp--;

					 node = port9; 
					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:121:6: importStatement
					{
					pushFollow(FOLLOW_importStatement_in_statement263);
					importStatement10=importStatement();
					state._fsp--;

					 node = importStatement10; 
					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:122:6: exportStatement
					{
					pushFollow(FOLLOW_exportStatement_in_statement272);
					exportStatement11=exportStatement();
					state._fsp--;

					 node = exportStatement11; 
					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:123:6: breakStatement
					{
					pushFollow(FOLLOW_breakStatement_in_statement281);
					breakStatement12=breakStatement();
					state._fsp--;

					 node = breakStatement12; 
					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:124:6: continueStatement
					{
					pushFollow(FOLLOW_continueStatement_in_statement290);
					continueStatement13=continueStatement();
					state._fsp--;

					 node = continueStatement13; 
					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:125:6: functionCall
					{
					pushFollow(FOLLOW_functionCall_in_statement299);
					functionCall14=functionCall();
					state._fsp--;

					 node = functionCall14; 
					}
					break;
				case 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:126:6: throwStatement
					{
					pushFollow(FOLLOW_throwStatement_in_statement308);
					throwStatement15=throwStatement();
					state._fsp--;

					 node = throwStatement15; 
					}
					break;
				case 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:127:6: matchStatement
					{
					pushFollow(FOLLOW_matchStatement_in_statement317);
					matchStatement16=matchStatement();
					state._fsp--;

					 node = matchStatement16; 
					}
					break;
				case 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:128:6: switchStatement
					{
					pushFollow(FOLLOW_switchStatement_in_statement326);
					switchStatement17=switchStatement();
					state._fsp--;

					 node = switchStatement17; 
					}
					break;
				case 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:129:6: ifStatement
					{
					pushFollow(FOLLOW_ifStatement_in_statement335);
					ifStatement18=ifStatement();
					state._fsp--;

					 node = ifStatement18; 
					}
					break;
				case 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:130:6: forStatement
					{
					pushFollow(FOLLOW_forStatement_in_statement344);
					forStatement19=forStatement();
					state._fsp--;

					 node = forStatement19;
					}
					break;
				case 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:131:6: pforStatement
					{
					pushFollow(FOLLOW_pforStatement_in_statement353);
					pforStatement20=pforStatement();
					state._fsp--;

					 node = pforStatement20; 
					}
					break;
				case 18 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:132:6: whileStatement
					{
					pushFollow(FOLLOW_whileStatement_in_statement362);
					whileStatement21=whileStatement();
					state._fsp--;

					 node = whileStatement21; 
					}
					break;
				case 19 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:133:6: guardedStatement
					{
					pushFollow(FOLLOW_guardedStatement_in_statement371);
					guardedStatement22=guardedStatement();
					state._fsp--;

					 node = guardedStatement22; 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "statement"



	// $ANTLR start "variant"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:136:1: variant returns [ReflexNode node] : ( Integer | Number | String | Long | Bool | Default );
	public final ReflexNode variant() throws RecognitionException {
		ReflexNode node = null;


		CommonTree Integer23=null;
		CommonTree Number24=null;
		CommonTree String25=null;
		CommonTree Long26=null;
		CommonTree Bool27=null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:141:3: ( Integer | Number | String | Long | Bool | Default )
			int alt5=6;
			switch ( input.LA(1) ) {
			case Integer:
				{
				alt5=1;
				}
				break;
			case Number:
				{
				alt5=2;
				}
				break;
			case String:
				{
				alt5=3;
				}
				break;
			case Long:
				{
				alt5=4;
				}
				break;
			case Bool:
				{
				alt5=5;
				}
				break;
			case Default:
				{
				alt5=6;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 5, 0, input);
				throw nvae;
			}
			switch (alt5) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:141:6: Integer
					{
					Integer23=(CommonTree)match(input,Integer,FOLLOW_Integer_in_variant398); 
					 node = AtomNode.getIntegerAtom(line, handler, currentScope, (Integer23!=null?Integer23.getText():null)); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:142:6: Number
					{
					Number24=(CommonTree)match(input,Number,FOLLOW_Number_in_variant407); 
					 node = new AtomNode(line, handler, currentScope, new BigDecimal((Number24!=null?Number24.getText():null), MathContext.DECIMAL128)); 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:143:6: String
					{
					String25=(CommonTree)match(input,String,FOLLOW_String_in_variant416); 
					 node = AtomNode.getStringAtom(line, handler, currentScope, (String25!=null?String25.getText():null)); 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:144:6: Long
					{
					Long26=(CommonTree)match(input,Long,FOLLOW_Long_in_variant425); 
					 node = new AtomNode(line, handler, currentScope, java.lang.Long.parseLong((Long26!=null?Long26.getText():null))); 
					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:145:6: Bool
					{
					Bool27=(CommonTree)match(input,Bool,FOLLOW_Bool_in_variant434); 
					 node = new AtomNode(line, handler, currentScope, Boolean.parseBoolean((Bool27!=null?Bool27.getText():null))); 
					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:146:6: Default
					{
					match(input,Default,FOLLOW_Default_in_variant443); 
					 node = null; 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "variant"



	// $ANTLR start "switchStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:149:1: switchStatement returns [ReflexNode node] : SWITCH expression ( caseStatement[switchNode] )+ ;
	public final ReflexNode switchStatement() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode expression28 =null;


		  CommonTree ahead = (CommonTree) input.LT(1);
		  int line = ahead.getToken().getLine();
		  SwitchNode switchNode = new SwitchNode(line, handler, currentScope);
		  node = switchNode;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:156:3: ( SWITCH expression ( caseStatement[switchNode] )+ )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:156:6: SWITCH expression ( caseStatement[switchNode] )+
			{
			match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement469); 
			pushFollow(FOLLOW_expression_in_switchStatement471);
			expression28=expression();
			state._fsp--;

			 switchNode.setSwitchValue(expression28); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:156:73: ( caseStatement[switchNode] )+
			int cnt6=0;
			loop6:
			while (true) {
				int alt6=2;
				int LA6_0 = input.LA(1);
				if ( (LA6_0==Bool||LA6_0==Default||LA6_0==Integer||LA6_0==Long||LA6_0==Number||LA6_0==String) ) {
					alt6=1;
				}

				switch (alt6) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:156:73: caseStatement[switchNode]
					{
					pushFollow(FOLLOW_caseStatement_in_switchStatement475);
					caseStatement(switchNode);
					state._fsp--;

					}
					break;

				default :
					if ( cnt6 >= 1 ) break loop6;
					EarlyExitException eee = new EarlyExitException(6, input);
					throw eee;
				}
				cnt6++;
			}

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "switchStatement"



	// $ANTLR start "caseStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:159:1: caseStatement[SwitchNode switchNode] : (v= variant )+ block ;
	public final void caseStatement(SwitchNode switchNode) throws RecognitionException {
		ReflexNode v =null;
		ReflexNode block29 =null;


		  List caseNodes = new ArrayList<>();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:163:3: ( (v= variant )+ block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:163:5: (v= variant )+ block
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:163:5: (v= variant )+
			int cnt7=0;
			loop7:
			while (true) {
				int alt7=2;
				int LA7_0 = input.LA(1);
				if ( (LA7_0==Bool||LA7_0==Default||LA7_0==Integer||LA7_0==Long||LA7_0==Number||LA7_0==String) ) {
					alt7=1;
				}

				switch (alt7) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:163:6: v= variant
					{
					pushFollow(FOLLOW_variant_in_caseStatement503);
					v=variant();
					state._fsp--;

					 caseNodes.add(v); 
					}
					break;

				default :
					if ( cnt7 >= 1 ) break loop7;
					EarlyExitException eee = new EarlyExitException(7, input);
					throw eee;
				}
				cnt7++;
			}

			pushFollow(FOLLOW_block_in_caseStatement509);
			block29=block();
			state._fsp--;

			 for (ReflexNode caseNode : caseNodes) switchNode.addCase(caseNode, block29); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "caseStatement"



	// $ANTLR start "matchStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:167:1: matchStatement returns [ReflexNode node] : MATCH (ident= Identifier )? expression ( actions[idNode, matchNode] )* ( otherwise[idNode, matchNode] )? ;
	public final ReflexNode matchStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree ident=null;
		ReflexNode expression30 =null;


		  CommonTree ahead = (CommonTree) input.LT(1);
		  int line = ahead.getToken().getLine();
		  MatchNode matchNode = new MatchNode(line, handler, currentScope);
		  node = matchNode;
		  String matchName = "__mAtCh__";

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:175:3: ( MATCH (ident= Identifier )? expression ( actions[idNode, matchNode] )* ( otherwise[idNode, matchNode] )? )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:175:5: MATCH (ident= Identifier )? expression ( actions[idNode, matchNode] )* ( otherwise[idNode, matchNode] )?
			{
			match(input,MATCH,FOLLOW_MATCH_in_matchStatement539); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:175:16: (ident= Identifier )?
			int alt8=2;
			int LA8_0 = input.LA(1);
			if ( (LA8_0==Identifier) ) {
				alt8=1;
			}
			switch (alt8) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:175:16: ident= Identifier
					{
					ident=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_matchStatement543); 
					}
					break;

			}

			 if (ident != null) matchName=ident.getText(); 
			pushFollow(FOLLOW_expression_in_matchStatement553);
			expression30=expression();
			state._fsp--;

			 
			  			matchNode.setMatchValue(new AssignmentNode(line, handler, currentScope, matchName, null, expression30));
			  			IdentifierNode idNode = new IdentifierNode(line, handler, currentScope, matchName, namespaceStack.asPrefix());
			  		
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:180:5: ( actions[idNode, matchNode] )*
			loop9:
			while (true) {
				int alt9=2;
				int LA9_0 = input.LA(1);
				if ( (LA9_0==Is) ) {
					alt9=1;
				}

				switch (alt9) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:180:5: actions[idNode, matchNode]
					{
					pushFollow(FOLLOW_actions_in_matchStatement561);
					actions(idNode, matchNode);
					state._fsp--;

					}
					break;

				default :
					break loop9;
				}
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:181:5: ( otherwise[idNode, matchNode] )?
			int alt10=2;
			int LA10_0 = input.LA(1);
			if ( (LA10_0==OTHERWISE) ) {
				alt10=1;
			}
			switch (alt10) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:181:5: otherwise[idNode, matchNode]
					{
					pushFollow(FOLLOW_otherwise_in_matchStatement570);
					otherwise(idNode, matchNode);
					state._fsp--;

					}
					break;

			}

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "matchStatement"



	// $ANTLR start "actions"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:184:1: actions[IdentifierNode idNode, MatchNode matchNode] : (comp= comparator[idNode] )+ block ;
	public final void actions(IdentifierNode idNode, MatchNode matchNode) throws RecognitionException {
		ReflexNode comp =null;
		ReflexNode block31 =null;


		  List compNodes = new ArrayList<>();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:188:3: ( (comp= comparator[idNode] )+ block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:188:5: (comp= comparator[idNode] )+ block
			{
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:188:5: (comp= comparator[idNode] )+
			int cnt11=0;
			loop11:
			while (true) {
				int alt11=2;
				int LA11_0 = input.LA(1);
				if ( (LA11_0==Is) ) {
					alt11=1;
				}

				switch (alt11) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:188:6: comp= comparator[idNode]
					{
					pushFollow(FOLLOW_comparator_in_actions595);
					comp=comparator(idNode);
					state._fsp--;

					 compNodes.add(comp); 
					}
					break;

				default :
					if ( cnt11 >= 1 ) break loop11;
					EarlyExitException eee = new EarlyExitException(11, input);
					throw eee;
				}
				cnt11++;
			}

			pushFollow(FOLLOW_block_in_actions602);
			block31=block();
			state._fsp--;

			 for (ReflexNode compNode : compNodes) matchNode.addCase(compNode, block31); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "actions"



	// $ANTLR start "comparator"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:191:1: comparator[IdentifierNode idNode] returns [ReflexNode node] : ( Is Equals rhs= expression | Is NEquals rhs= expression | Is GTEquals rhs= expression | Is LTEquals rhs= expression | Is GT rhs= expression | Is LT rhs= expression );
	public final ReflexNode comparator(IdentifierNode idNode) throws RecognitionException {
		ReflexNode node = null;


		ReflexNode rhs =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:196:3: ( Is Equals rhs= expression | Is NEquals rhs= expression | Is GTEquals rhs= expression | Is LTEquals rhs= expression | Is GT rhs= expression | Is LT rhs= expression )
			int alt12=6;
			int LA12_0 = input.LA(1);
			if ( (LA12_0==Is) ) {
				switch ( input.LA(2) ) {
				case Equals:
					{
					alt12=1;
					}
					break;
				case NEquals:
					{
					alt12=2;
					}
					break;
				case GTEquals:
					{
					alt12=3;
					}
					break;
				case LTEquals:
					{
					alt12=4;
					}
					break;
				case GT:
					{
					alt12=5;
					}
					break;
				case LT:
					{
					alt12=6;
					}
					break;
				default:
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 12, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 12, 0, input);
				throw nvae;
			}

			switch (alt12) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:196:6: Is Equals rhs= expression
					{
					match(input,Is,FOLLOW_Is_in_comparator631); 
					match(input,Equals,FOLLOW_Equals_in_comparator633); 
					pushFollow(FOLLOW_expression_in_comparator637);
					rhs=expression();
					state._fsp--;

					 node = new EqualsNode(line, handler, currentScope, idNode, rhs); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:197:6: Is NEquals rhs= expression
					{
					match(input,Is,FOLLOW_Is_in_comparator646); 
					match(input,NEquals,FOLLOW_NEquals_in_comparator648); 
					pushFollow(FOLLOW_expression_in_comparator652);
					rhs=expression();
					state._fsp--;

					 node = new NotEqualsNode(line,handler, currentScope, idNode, rhs); 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:198:6: Is GTEquals rhs= expression
					{
					match(input,Is,FOLLOW_Is_in_comparator661); 
					match(input,GTEquals,FOLLOW_GTEquals_in_comparator663); 
					pushFollow(FOLLOW_expression_in_comparator667);
					rhs=expression();
					state._fsp--;

					 node = new GTEqualsNode(line, handler, currentScope, idNode, rhs); 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:199:6: Is LTEquals rhs= expression
					{
					match(input,Is,FOLLOW_Is_in_comparator676); 
					match(input,LTEquals,FOLLOW_LTEquals_in_comparator678); 
					pushFollow(FOLLOW_expression_in_comparator682);
					rhs=expression();
					state._fsp--;

					 node = new LTEqualsNode(line, handler, currentScope, idNode, rhs); 
					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:200:6: Is GT rhs= expression
					{
					match(input,Is,FOLLOW_Is_in_comparator691); 
					match(input,GT,FOLLOW_GT_in_comparator693); 
					pushFollow(FOLLOW_expression_in_comparator697);
					rhs=expression();
					state._fsp--;

					 node = new GTNode(line, handler, currentScope, idNode, rhs); 
					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:201:6: Is LT rhs= expression
					{
					match(input,Is,FOLLOW_Is_in_comparator706); 
					match(input,LT,FOLLOW_LT_in_comparator708); 
					pushFollow(FOLLOW_expression_in_comparator712);
					rhs=expression();
					state._fsp--;

					 node = new LTNode(line, handler, currentScope, idNode, rhs); 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "comparator"



	// $ANTLR start "otherwise"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:204:1: otherwise[ReflexNode exp, MatchNode matchNode] : OTHERWISE block ;
	public final void otherwise(ReflexNode exp, MatchNode matchNode) throws RecognitionException {
		ReflexNode block32 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:209:3: ( OTHERWISE block )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:209:5: OTHERWISE block
			{
			match(input,OTHERWISE,FOLLOW_OTHERWISE_in_otherwise733); 
			pushFollow(FOLLOW_block_in_otherwise735);
			block32=block();
			state._fsp--;

			 matchNode.addCase(new AtomNode(line, handler, currentScope, new ReflexValue(line, Boolean.TRUE)), block32); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "otherwise"



	// $ANTLR start "assignment"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:212:1: assignment returns [ReflexNode node] : ( ^( CONSTASSIGNMENT i= Identifier e= expression ) | ^( ASSIGNMENT i= ( Identifier | DottedIdentifier ) (x= indexes )? e= expression ) | ^( PLUSASSIGNMENT i= Identifier e= expression ) | ^( MINUSASSIGNMENT i= Identifier e= expression ) );
	public final ReflexNode assignment() throws RecognitionException {
		ReflexNode node = null;


		CommonTree i=null;
		ReflexNode e =null;
		java.util.List> x =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:217:3: ( ^( CONSTASSIGNMENT i= Identifier e= expression ) | ^( ASSIGNMENT i= ( Identifier | DottedIdentifier ) (x= indexes )? e= expression ) | ^( PLUSASSIGNMENT i= Identifier e= expression ) | ^( MINUSASSIGNMENT i= Identifier e= expression ) )
			int alt14=4;
			switch ( input.LA(1) ) {
			case CONSTASSIGNMENT:
				{
				alt14=1;
				}
				break;
			case ASSIGNMENT:
				{
				alt14=2;
				}
				break;
			case PLUSASSIGNMENT:
				{
				alt14=3;
				}
				break;
			case MINUSASSIGNMENT:
				{
				alt14=4;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 14, 0, input);
				throw nvae;
			}
			switch (alt14) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:217:6: ^( CONSTASSIGNMENT i= Identifier e= expression )
					{
					match(input,CONSTASSIGNMENT,FOLLOW_CONSTASSIGNMENT_in_assignment761); 
					match(input, Token.DOWN, null); 
					i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_assignment765); 
					pushFollow(FOLLOW_expression_in_assignment769);
					e=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ConstAssignmentNode(line, handler, currentScope, (i!=null?i.getText():null), e,
					                                                                                    namespaceStack.asPrefix()); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:219:5: ^( ASSIGNMENT i= ( Identifier | DottedIdentifier ) (x= indexes )? e= expression )
					{
					match(input,ASSIGNMENT,FOLLOW_ASSIGNMENT_in_assignment779); 
					match(input, Token.DOWN, null); 
					i=(CommonTree)input.LT(1);
					if ( input.LA(1)==DottedIdentifier||input.LA(1)==Identifier ) {
						input.consume();
						state.errorRecovery=false;
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						throw mse;
					}
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:219:53: (x= indexes )?
					int alt13=2;
					int LA13_0 = input.LA(1);
					if ( (LA13_0==INDEXES) ) {
						alt13=1;
					}
					switch (alt13) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:219:53: x= indexes
							{
							pushFollow(FOLLOW_indexes_in_assignment793);
							x=indexes();
							state._fsp--;

							}
							break;

					}

					pushFollow(FOLLOW_expression_in_assignment798);
					e=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AssignmentNode(line, handler, currentScope, (i!=null?i.getText():null), x, e); 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:221:5: ^( PLUSASSIGNMENT i= Identifier e= expression )
					{
					match(input,PLUSASSIGNMENT,FOLLOW_PLUSASSIGNMENT_in_assignment813); 
					match(input, Token.DOWN, null); 
					i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_assignment817); 
					pushFollow(FOLLOW_expression_in_assignment821);
					e=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PlusAssignmentNode(line, handler, currentScope, (i!=null?i.getText():null), e); 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:223:5: ^( MINUSASSIGNMENT i= Identifier e= expression )
					{
					match(input,MINUSASSIGNMENT,FOLLOW_MINUSASSIGNMENT_in_assignment836); 
					match(input, Token.DOWN, null); 
					i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_assignment840); 
					pushFollow(FOLLOW_expression_in_assignment844);
					e=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PlusAssignmentNode(line, handler, currentScope, (i!=null?i.getText():null), new UnaryMinusNode(line, handler, currentScope, e)); 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "assignment"



	// $ANTLR start "breakStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:227:1: breakStatement returns [ReflexNode node] : BREAK ;
	public final ReflexNode breakStatement() throws RecognitionException {
		ReflexNode node = null;



		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:232:3: ( BREAK )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:232:5: BREAK
			{
			match(input,BREAK,FOLLOW_BREAK_in_breakStatement874); 
			  node = new BreakNode(line, handler, currentScope); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "breakStatement"



	// $ANTLR start "continueStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:235:1: continueStatement returns [ReflexNode node] : CONTINUE ;
	public final ReflexNode continueStatement() throws RecognitionException {
		ReflexNode node = null;



		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:240:3: ( CONTINUE )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:240:5: CONTINUE
			{
			match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement898); 
			  node = new ContinueNode(line, handler, currentScope); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "continueStatement"



	// $ANTLR start "importStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:243:1: importStatement returns [ReflexNode node] : ^( IMPORT l= Identifier ^( IMPORTAS (alias= Identifier )? ) ^( IMPORTPARAMS (params= exprList )? ) ^( IMPORTFROM (jarUris= jarUriList )? ) ) ;
	public final ReflexNode importStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree l=null;
		CommonTree alias=null;
		java.util.List params =null;
		java.util.List jarUris =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:3: ( ^( IMPORT l= Identifier ^( IMPORTAS (alias= Identifier )? ) ^( IMPORTPARAMS (params= exprList )? ) ^( IMPORTFROM (jarUris= jarUriList )? ) ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:5: ^( IMPORT l= Identifier ^( IMPORTAS (alias= Identifier )? ) ^( IMPORTPARAMS (params= exprList )? ) ^( IMPORTFROM (jarUris= jarUriList )? ) )
			{
			match(input,IMPORT,FOLLOW_IMPORT_in_importStatement923); 
			match(input, Token.DOWN, null); 
			l=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_importStatement927); 
			match(input,IMPORTAS,FOLLOW_IMPORTAS_in_importStatement930); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:43: (alias= Identifier )?
				int alt15=2;
				int LA15_0 = input.LA(1);
				if ( (LA15_0==Identifier) ) {
					alt15=1;
				}
				switch (alt15) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:43: alias= Identifier
						{
						alias=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_importStatement934); 
						}
						break;

				}

				match(input, Token.UP, null); 
			}

			match(input,IMPORTPARAMS,FOLLOW_IMPORTPARAMS_in_importStatement939); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:78: (params= exprList )?
				int alt16=2;
				int LA16_0 = input.LA(1);
				if ( (LA16_0==EXP_LIST) ) {
					alt16=1;
				}
				switch (alt16) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:78: params= exprList
						{
						pushFollow(FOLLOW_exprList_in_importStatement943);
						params=exprList();
						state._fsp--;

						}
						break;

				}

				match(input, Token.UP, null); 
			}

			match(input,IMPORTFROM,FOLLOW_IMPORTFROM_in_importStatement948); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:110: (jarUris= jarUriList )?
				int alt17=2;
				int LA17_0 = input.LA(1);
				if ( (LA17_0==JARURI_LIST) ) {
					alt17=1;
				}
				switch (alt17) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:248:110: jarUris= jarUriList
						{
						pushFollow(FOLLOW_jarUriList_in_importStatement952);
						jarUris=jarUriList();
						state._fsp--;

						}
						break;

				}

				match(input, Token.UP, null); 
			}

			match(input, Token.UP, null); 

			 node = new ImportNode(line, handler, currentScope, importHandler, (l!=null?l.getText():null), (alias!=null?alias.getText():null), params, jarUris); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "importStatement"



	// $ANTLR start "port"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:251:1: port returns [ReflexNode node] : ( ^( PORTF l= expression r= expression ) | ^( PORTR expression ) );
	public final ReflexNode port() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode l =null;
		ReflexNode r =null;
		ReflexNode expression33 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:256:4: ( ^( PORTF l= expression r= expression ) | ^( PORTR expression ) )
			int alt18=2;
			int LA18_0 = input.LA(1);
			if ( (LA18_0==PORTF) ) {
				alt18=1;
			}
			else if ( (LA18_0==PORTR) ) {
				alt18=2;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 18, 0, input);
				throw nvae;
			}

			switch (alt18) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:256:6: ^( PORTF l= expression r= expression )
					{
					match(input,PORTF,FOLLOW_PORTF_in_port981); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_port985);
					l=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_port989);
					r=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PortANode(line, handler, currentScope, l, r); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:258:6: ^( PORTR expression )
					{
					match(input,PORTR,FOLLOW_PORTR_in_port1006); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_port1008);
					expression33=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PortANode(line, handler, currentScope, null, expression33); 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "port"



	// $ANTLR start "patchStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:262:1: patchStatement returns [ReflexNode node] : ^( PATCH l= expression i= Identifier b= block ) ;
	public final ReflexNode patchStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree i=null;
		ReflexNode l =null;
		ReflexNode b =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:267:2: ( ^( PATCH l= expression i= Identifier b= block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:267:4: ^( PATCH l= expression i= Identifier b= block )
			{
			match(input,PATCH,FOLLOW_PATCH_in_patchStatement1040); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_expression_in_patchStatement1044);
			l=expression();
			state._fsp--;

			i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_patchStatement1048); 
			pushFollow(FOLLOW_block_in_patchStatement1052);
			b=block();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new PatchNode(line, handler, currentScope, l, (i!=null?i.getText():null), b); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "patchStatement"



	// $ANTLR start "pull"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:271:1: pull returns [ReflexNode node] : ^( PULL i= Identifier e= expression ) ;
	public final ReflexNode pull() throws RecognitionException {
		ReflexNode node = null;


		CommonTree i=null;
		ReflexNode e =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:276:3: ( ^( PULL i= Identifier e= expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:276:5: ^( PULL i= Identifier e= expression )
			{
			match(input,PULL,FOLLOW_PULL_in_pull1081); 
			match(input, Token.DOWN, null); 
			i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_pull1085); 
			pushFollow(FOLLOW_expression_in_pull1089);
			e=expression();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new PullNode(line, handler, currentScope, (i!=null?i.getText():null), e); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "pull"



	// $ANTLR start "metapull"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:280:1: metapull returns [ReflexNode node] : ^( METAPULL i= Identifier e= expression ) ;
	public final ReflexNode metapull() throws RecognitionException {
		ReflexNode node = null;


		CommonTree i=null;
		ReflexNode e =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:285:3: ( ^( METAPULL i= Identifier e= expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:285:5: ^( METAPULL i= Identifier e= expression )
			{
			match(input,METAPULL,FOLLOW_METAPULL_in_metapull1120); 
			match(input, Token.DOWN, null); 
			i=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_metapull1124); 
			pushFollow(FOLLOW_expression_in_metapull1128);
			e=expression();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new MetaPullNode(line, handler, currentScope, (i!=null?i.getText():null), e); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "metapull"



	// $ANTLR start "push"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:290:1: push returns [ReflexNode node] : ^( PUSH l= expression r= expression ) ;
	public final ReflexNode push() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode l =null;
		ReflexNode r =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:295:3: ( ^( PUSH l= expression r= expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:295:5: ^( PUSH l= expression r= expression )
			{
			match(input,PUSH,FOLLOW_PUSH_in_push1160); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_expression_in_push1164);
			l=expression();
			state._fsp--;

			pushFollow(FOLLOW_expression_in_push1168);
			r=expression();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new PushNode(line, handler, currentScope, l, r); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "push"



	// $ANTLR start "throwStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:299:1: throwStatement returns [ReflexNode node] : ^( Throw e= expression ) ;
	public final ReflexNode throwStatement() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode e =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:304:3: ( ^( Throw e= expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:304:5: ^( Throw e= expression )
			{
			match(input,Throw,FOLLOW_Throw_in_throwStatement1199); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_expression_in_throwStatement1203);
			e=expression();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new ThrowNode(line, handler, currentScope, e); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "throwStatement"



	// $ANTLR start "functionCall"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:308:1: functionCall returns [ReflexNode node] : ( ^( FUNC_CALL Identifier ( exprList )? ) | ^( FUNC_CALL PackageIdentifier ( exprList )? ) | ^( FUNC_CALL Println ( expression )? ) | ^( FUNC_CALL GetLine ( expression )? ) | ^( FUNC_CALL GetCh ( expression )? ) | ^( FUNC_CALL Capabilities ) | ^( FUNC_CALL HasCapability expression ) | ^( FUNC_CALL Print expression ) | ^( FUNC_CALL MapFn Identifier expression ) | ^( FUNC_CALL FilterFn Identifier expression ) | ^( FUNC_CALL Fold Identifier a= expression b= expression ) | ^( FUNC_CALL Any Identifier expression ) | ^( FUNC_CALL All Identifier expression ) | ^( FUNC_CALL TakeWhile Identifier expression ) | ^( FUNC_CALL DropWhile Identifier expression ) | ^( FUNC_CALL SplitWith Identifier expression ) | ^( FUNC_CALL Split str= expression sep= expression quoter= expression ) | ^( FUNC_CALL TypeOf expression ) | ^( FUNC_CALL Assert msg= expression exp= expression ) | ^( FUNC_CALL Size expression ) | ^( FUNC_CALL RPull u= expression ) | ^( FUNC_CALL RPush u= expression v= expression (o= expression )? ) | ^( FUNC_CALL Transpose expression ) | ^( FUNC_CALL Keys expression ) | ^( FUNC_CALL Sort arg= expression asc= expression ) | ^( FUNC_CALL Collate arg= expression locale= expression ) | ^( FUNC_CALL B64Compress expression ) | ^( FUNC_CALL B64Decompress expression ) | ^( FUNC_CALL Debug expression ) | ^( FUNC_CALL Date ( exprList )? ) | ^( FUNC_CALL Time ( expression )? ) | ^( FUNC_CALL Evals expression ) | ^( FUNC_CALL Vars ) | ^( FUNC_CALL ReadDir expression ) | ^( FUNC_CALL MkDir expression ) | ^( FUNC_CALL IsFile expression ) | ^( FUNC_CALL IsFolder expression ) | ^( FUNC_CALL File exprList ) | ^( FUNC_CALL Copy s= expression t= expression ) | ^( FUNC_CALL Archive expression ) | ^( FUNC_CALL Delete expression ) | ^( FUNC_CALL Port expression ) | ^( FUNC_CALL Suspend expression ) | ^( FUNC_CALL Close expression ) | ^( FUNC_CALL Timer ( expression )? ) | ^( FUNC_CALL Merge exprList ) | ^( FUNC_CALL Format exprList ) | ^( FUNC_CALL MergeIf exprList ) | ^( FUNC_CALL Replace v= expression s= expression t= expression ) | ^( FUNC_CALL Message a= expression m= expression ) | ^( FUNC_CALL PutCache v= expression n= expression (exp= expression )? ) | ^( FUNC_CALL GetCache n= expression ) | ^( FUNC_CALL Difference exprList ) | ^( FUNC_CALL Join exprList ) | ^( FUNC_CALL Unique exprList ) | ^( FUNC_CALL Json expression ) | ^( FUNC_CALL MD5 expression ) | ^( FUNC_CALL FromJson expression ) | ^( FUNC_CALL UrlEncode expression ) | ^( FUNC_CALL UrlDecode expression ) | ^( FUNC_CALL Uuid ) | ^( FUNC_CALL Remove Identifier k= expression ) | ^( FUNC_CALL AsyncCall s= expression (p= expression )? ) | ^( FUNC_CALL AsyncCallScript r= expression s= expression (p= expression )? ) | ^( FUNC_CALL AsyncStatus expression ) | ^( FUNC_CALL SuspendWait exprList ) | ^( FUNC_CALL Wait d= expression (in= expression retry= expression )? ) | ^( FUNC_CALL Signal d= expression v= expression ) | ^( FUNC_CALL Chain s= expression (p= expression )? ) | ^( FUNC_CALL Sleep expression ) | ^( FUNC_CALL Matches s= expression r= expression ) | ^( FUNC_CALL Cast a= expression b= expression ) | ^( FUNC_CALL Rand expression ) | ^( FUNC_CALL Round v= expression dp= expression ) | ^( FUNC_CALL Lib expression ) | ^( FUNC_CALL Call a= expression b= expression c= expression ) | ^( FUNC_CALL New a= expression ) | ^( FUNC_CALL GenSchema a= expression ) | ^( FUNC_CALL GenStruct Identifier a= expression ) | ^( FUNC_CALL Template t= expression p= expression ) | ^( FUNC_CALL Spawn p= expression (e= expression f= expression )? ) | ^( FUNC_CALL Defined Identifier ) | ^( FUNC_CALL Defined lookup ) | ^( KERNEL_CALL KernelIdentifier ( exprList )? ) | ^( QUALIFIED_FUNC_CALL DottedIdentifier ( exprList )? ) );
	public final ReflexNode functionCall() throws RecognitionException {
		ReflexNode node = null;


		CommonTree Identifier34=null;
		CommonTree PackageIdentifier36=null;
		CommonTree Identifier43=null;
		CommonTree Identifier45=null;
		CommonTree Identifier47=null;
		CommonTree Identifier48=null;
		CommonTree Identifier50=null;
		CommonTree Identifier52=null;
		CommonTree Identifier54=null;
		CommonTree Identifier56=null;
		CommonTree Identifier90=null;
		CommonTree Identifier96=null;
		CommonTree Identifier97=null;
		CommonTree KernelIdentifier99=null;
		CommonTree DottedIdentifier101=null;
		ReflexNode a =null;
		ReflexNode b =null;
		ReflexNode str =null;
		ReflexNode sep =null;
		ReflexNode quoter =null;
		ReflexNode msg =null;
		ReflexNode exp =null;
		ReflexNode u =null;
		ReflexNode v =null;
		ReflexNode o =null;
		ReflexNode arg =null;
		ReflexNode asc =null;
		ReflexNode locale =null;
		ReflexNode s =null;
		ReflexNode t =null;
		ReflexNode m =null;
		ReflexNode n =null;
		ReflexNode k =null;
		ReflexNode p =null;
		ReflexNode r =null;
		ReflexNode d =null;
		ReflexNode in =null;
		ReflexNode retry =null;
		ReflexNode dp =null;
		ReflexNode c =null;
		ReflexNode e =null;
		ReflexNode f =null;
		java.util.List exprList35 =null;
		java.util.List exprList37 =null;
		ReflexNode expression38 =null;
		ReflexNode expression39 =null;
		ReflexNode expression40 =null;
		ReflexNode expression41 =null;
		ReflexNode expression42 =null;
		ReflexNode expression44 =null;
		ReflexNode expression46 =null;
		ReflexNode expression49 =null;
		ReflexNode expression51 =null;
		ReflexNode expression53 =null;
		ReflexNode expression55 =null;
		ReflexNode expression57 =null;
		ReflexNode expression58 =null;
		ReflexNode expression59 =null;
		ReflexNode expression60 =null;
		ReflexNode expression61 =null;
		ReflexNode expression62 =null;
		ReflexNode expression63 =null;
		ReflexNode expression64 =null;
		java.util.List exprList65 =null;
		ReflexNode expression66 =null;
		ReflexNode expression67 =null;
		ReflexNode expression68 =null;
		ReflexNode expression69 =null;
		ReflexNode expression70 =null;
		ReflexNode expression71 =null;
		java.util.List exprList72 =null;
		ReflexNode expression73 =null;
		ReflexNode expression74 =null;
		ReflexNode expression75 =null;
		ReflexNode expression76 =null;
		ReflexNode expression77 =null;
		ReflexNode expression78 =null;
		java.util.List exprList79 =null;
		java.util.List exprList80 =null;
		java.util.List exprList81 =null;
		java.util.List exprList82 =null;
		java.util.List exprList83 =null;
		java.util.List exprList84 =null;
		ReflexNode expression85 =null;
		ReflexNode expression86 =null;
		ReflexNode expression87 =null;
		ReflexNode expression88 =null;
		ReflexNode expression89 =null;
		ReflexNode expression91 =null;
		java.util.List exprList92 =null;
		ReflexNode expression93 =null;
		ReflexNode expression94 =null;
		ReflexNode expression95 =null;
		ReflexNode lookup98 =null;
		java.util.List exprList100 =null;
		java.util.List exprList102 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:313:3: ( ^( FUNC_CALL Identifier ( exprList )? ) | ^( FUNC_CALL PackageIdentifier ( exprList )? ) | ^( FUNC_CALL Println ( expression )? ) | ^( FUNC_CALL GetLine ( expression )? ) | ^( FUNC_CALL GetCh ( expression )? ) | ^( FUNC_CALL Capabilities ) | ^( FUNC_CALL HasCapability expression ) | ^( FUNC_CALL Print expression ) | ^( FUNC_CALL MapFn Identifier expression ) | ^( FUNC_CALL FilterFn Identifier expression ) | ^( FUNC_CALL Fold Identifier a= expression b= expression ) | ^( FUNC_CALL Any Identifier expression ) | ^( FUNC_CALL All Identifier expression ) | ^( FUNC_CALL TakeWhile Identifier expression ) | ^( FUNC_CALL DropWhile Identifier expression ) | ^( FUNC_CALL SplitWith Identifier expression ) | ^( FUNC_CALL Split str= expression sep= expression quoter= expression ) | ^( FUNC_CALL TypeOf expression ) | ^( FUNC_CALL Assert msg= expression exp= expression ) | ^( FUNC_CALL Size expression ) | ^( FUNC_CALL RPull u= expression ) | ^( FUNC_CALL RPush u= expression v= expression (o= expression )? ) | ^( FUNC_CALL Transpose expression ) | ^( FUNC_CALL Keys expression ) | ^( FUNC_CALL Sort arg= expression asc= expression ) | ^( FUNC_CALL Collate arg= expression locale= expression ) | ^( FUNC_CALL B64Compress expression ) | ^( FUNC_CALL B64Decompress expression ) | ^( FUNC_CALL Debug expression ) | ^( FUNC_CALL Date ( exprList )? ) | ^( FUNC_CALL Time ( expression )? ) | ^( FUNC_CALL Evals expression ) | ^( FUNC_CALL Vars ) | ^( FUNC_CALL ReadDir expression ) | ^( FUNC_CALL MkDir expression ) | ^( FUNC_CALL IsFile expression ) | ^( FUNC_CALL IsFolder expression ) | ^( FUNC_CALL File exprList ) | ^( FUNC_CALL Copy s= expression t= expression ) | ^( FUNC_CALL Archive expression ) | ^( FUNC_CALL Delete expression ) | ^( FUNC_CALL Port expression ) | ^( FUNC_CALL Suspend expression ) | ^( FUNC_CALL Close expression ) | ^( FUNC_CALL Timer ( expression )? ) | ^( FUNC_CALL Merge exprList ) | ^( FUNC_CALL Format exprList ) | ^( FUNC_CALL MergeIf exprList ) | ^( FUNC_CALL Replace v= expression s= expression t= expression ) | ^( FUNC_CALL Message a= expression m= expression ) | ^( FUNC_CALL PutCache v= expression n= expression (exp= expression )? ) | ^( FUNC_CALL GetCache n= expression ) | ^( FUNC_CALL Difference exprList ) | ^( FUNC_CALL Join exprList ) | ^( FUNC_CALL Unique exprList ) | ^( FUNC_CALL Json expression ) | ^( FUNC_CALL MD5 expression ) | ^( FUNC_CALL FromJson expression ) | ^( FUNC_CALL UrlEncode expression ) | ^( FUNC_CALL UrlDecode expression ) | ^( FUNC_CALL Uuid ) | ^( FUNC_CALL Remove Identifier k= expression ) | ^( FUNC_CALL AsyncCall s= expression (p= expression )? ) | ^( FUNC_CALL AsyncCallScript r= expression s= expression (p= expression )? ) | ^( FUNC_CALL AsyncStatus expression ) | ^( FUNC_CALL SuspendWait exprList ) | ^( FUNC_CALL Wait d= expression (in= expression retry= expression )? ) | ^( FUNC_CALL Signal d= expression v= expression ) | ^( FUNC_CALL Chain s= expression (p= expression )? ) | ^( FUNC_CALL Sleep expression ) | ^( FUNC_CALL Matches s= expression r= expression ) | ^( FUNC_CALL Cast a= expression b= expression ) | ^( FUNC_CALL Rand expression ) | ^( FUNC_CALL Round v= expression dp= expression ) | ^( FUNC_CALL Lib expression ) | ^( FUNC_CALL Call a= expression b= expression c= expression ) | ^( FUNC_CALL New a= expression ) | ^( FUNC_CALL GenSchema a= expression ) | ^( FUNC_CALL GenStruct Identifier a= expression ) | ^( FUNC_CALL Template t= expression p= expression ) | ^( FUNC_CALL Spawn p= expression (e= expression f= expression )? ) | ^( FUNC_CALL Defined Identifier ) | ^( FUNC_CALL Defined lookup ) | ^( KERNEL_CALL KernelIdentifier ( exprList )? ) | ^( QUALIFIED_FUNC_CALL DottedIdentifier ( exprList )? ) )
			int alt36=85;
			alt36 = dfa36.predict(input);
			switch (alt36) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:313:6: ^( FUNC_CALL Identifier ( exprList )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1235); 
					match(input, Token.DOWN, null); 
					Identifier34=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1237); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:313:29: ( exprList )?
					int alt19=2;
					int LA19_0 = input.LA(1);
					if ( (LA19_0==EXP_LIST) ) {
						alt19=1;
					}
					switch (alt19) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:313:29: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1239);
							exprList35=exprList();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new FunctionCallNode(line, handler, currentScope, (Identifier34!=null?Identifier34.getText():null), exprList35, languageRegistry, importHandler, namespaceStack.asPrefix()); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:314:6: ^( FUNC_CALL PackageIdentifier ( exprList )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1251); 
					match(input, Token.DOWN, null); 
					PackageIdentifier36=(CommonTree)match(input,PackageIdentifier,FOLLOW_PackageIdentifier_in_functionCall1253); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:314:36: ( exprList )?
					int alt20=2;
					int LA20_0 = input.LA(1);
					if ( (LA20_0==EXP_LIST) ) {
						alt20=1;
					}
					switch (alt20) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:314:36: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1255);
							exprList37=exprList();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new PackageCallNode(line, handler, currentScope, importHandler, (PackageIdentifier36!=null?PackageIdentifier36.getText():null), exprList37); 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:315:6: ^( FUNC_CALL Println ( expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1267); 
					match(input, Token.DOWN, null); 
					match(input,Println,FOLLOW_Println_in_functionCall1269); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:315:26: ( expression )?
					int alt21=2;
					int LA21_0 = input.LA(1);
					if ( (LA21_0==Add||LA21_0==And||LA21_0==Bool||LA21_0==Divide||LA21_0==Equals||(LA21_0 >= GT && LA21_0 <= GTEquals)||LA21_0==In||LA21_0==Integer||(LA21_0 >= LOOKUP && LA21_0 <= LTEquals)||LA21_0==Long||(LA21_0 >= Modulus && LA21_0 <= NEquals)||(LA21_0 >= Null && LA21_0 <= Number)||LA21_0==Or||LA21_0==Pow||LA21_0==RANGELOOKUP||LA21_0==SPARSE||LA21_0==Subtract||LA21_0==TERNARY||LA21_0==UNARY_MIN) ) {
						alt21=1;
					}
					switch (alt21) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:315:26: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1271);
							expression38=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new PrintlnNode(line, handler, currentScope, expression38); 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:316:6: ^( FUNC_CALL GetLine ( expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1283); 
					match(input, Token.DOWN, null); 
					match(input,GetLine,FOLLOW_GetLine_in_functionCall1285); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:316:26: ( expression )?
					int alt22=2;
					int LA22_0 = input.LA(1);
					if ( (LA22_0==Add||LA22_0==And||LA22_0==Bool||LA22_0==Divide||LA22_0==Equals||(LA22_0 >= GT && LA22_0 <= GTEquals)||LA22_0==In||LA22_0==Integer||(LA22_0 >= LOOKUP && LA22_0 <= LTEquals)||LA22_0==Long||(LA22_0 >= Modulus && LA22_0 <= NEquals)||(LA22_0 >= Null && LA22_0 <= Number)||LA22_0==Or||LA22_0==Pow||LA22_0==RANGELOOKUP||LA22_0==SPARSE||LA22_0==Subtract||LA22_0==TERNARY||LA22_0==UNARY_MIN) ) {
						alt22=1;
					}
					switch (alt22) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:316:26: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1287);
							expression39=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new GetLineNode(line, handler, currentScope, expression39); 
					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:317:6: ^( FUNC_CALL GetCh ( expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1299); 
					match(input, Token.DOWN, null); 
					match(input,GetCh,FOLLOW_GetCh_in_functionCall1301); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:317:24: ( expression )?
					int alt23=2;
					int LA23_0 = input.LA(1);
					if ( (LA23_0==Add||LA23_0==And||LA23_0==Bool||LA23_0==Divide||LA23_0==Equals||(LA23_0 >= GT && LA23_0 <= GTEquals)||LA23_0==In||LA23_0==Integer||(LA23_0 >= LOOKUP && LA23_0 <= LTEquals)||LA23_0==Long||(LA23_0 >= Modulus && LA23_0 <= NEquals)||(LA23_0 >= Null && LA23_0 <= Number)||LA23_0==Or||LA23_0==Pow||LA23_0==RANGELOOKUP||LA23_0==SPARSE||LA23_0==Subtract||LA23_0==TERNARY||LA23_0==UNARY_MIN) ) {
						alt23=1;
					}
					switch (alt23) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:317:24: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1303);
							expression40=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new GetChNode(line, handler, currentScope, expression40); 
					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:318:6: ^( FUNC_CALL Capabilities )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1315); 
					match(input, Token.DOWN, null); 
					match(input,Capabilities,FOLLOW_Capabilities_in_functionCall1317); 
					match(input, Token.UP, null); 

					 node = new CapabilitiesNode(line, handler, currentScope); 
					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:319:6: ^( FUNC_CALL HasCapability expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1329); 
					match(input, Token.DOWN, null); 
					match(input,HasCapability,FOLLOW_HasCapability_in_functionCall1331); 
					pushFollow(FOLLOW_expression_in_functionCall1333);
					expression41=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new HasCapabilityNode(line, handler, currentScope, expression41); 
					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:320:6: ^( FUNC_CALL Print expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1345); 
					match(input, Token.DOWN, null); 
					match(input,Print,FOLLOW_Print_in_functionCall1347); 
					pushFollow(FOLLOW_expression_in_functionCall1349);
					expression42=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PrintNode(line, handler, currentScope, expression42); 
					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:321:6: ^( FUNC_CALL MapFn Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1360); 
					match(input, Token.DOWN, null); 
					match(input,MapFn,FOLLOW_MapFn_in_functionCall1362); 
					Identifier43=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1364); 
					pushFollow(FOLLOW_expression_in_functionCall1366);
					expression44=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MapFnNode(line, handler, currentScope, (Identifier43!=null?Identifier43.getText():null), expression44, languageRegistry, importHandler); 
					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:322:6: ^( FUNC_CALL FilterFn Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1377); 
					match(input, Token.DOWN, null); 
					match(input,FilterFn,FOLLOW_FilterFn_in_functionCall1379); 
					Identifier45=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1381); 
					pushFollow(FOLLOW_expression_in_functionCall1383);
					expression46=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new FilterFnNode(line, handler, currentScope, (Identifier45!=null?Identifier45.getText():null), expression46, languageRegistry, importHandler); 
					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:323:6: ^( FUNC_CALL Fold Identifier a= expression b= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1394); 
					match(input, Token.DOWN, null); 
					match(input,Fold,FOLLOW_Fold_in_functionCall1396); 
					Identifier47=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1398); 
					pushFollow(FOLLOW_expression_in_functionCall1402);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1406);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new FoldNode(line, handler, currentScope, (Identifier47!=null?Identifier47.getText():null), a, b, languageRegistry, importHandler); 
					}
					break;
				case 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:324:6: ^( FUNC_CALL Any Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1417); 
					match(input, Token.DOWN, null); 
					match(input,Any,FOLLOW_Any_in_functionCall1419); 
					Identifier48=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1421); 
					pushFollow(FOLLOW_expression_in_functionCall1423);
					expression49=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AnyNode(line, handler, currentScope, (Identifier48!=null?Identifier48.getText():null), expression49, languageRegistry, importHandler); 
					}
					break;
				case 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:325:6: ^( FUNC_CALL All Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1434); 
					match(input, Token.DOWN, null); 
					match(input,All,FOLLOW_All_in_functionCall1436); 
					Identifier50=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1438); 
					pushFollow(FOLLOW_expression_in_functionCall1440);
					expression51=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AllNode(line, handler, currentScope, (Identifier50!=null?Identifier50.getText():null), expression51, languageRegistry, importHandler); 
					}
					break;
				case 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:326:6: ^( FUNC_CALL TakeWhile Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1451); 
					match(input, Token.DOWN, null); 
					match(input,TakeWhile,FOLLOW_TakeWhile_in_functionCall1453); 
					Identifier52=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1455); 
					pushFollow(FOLLOW_expression_in_functionCall1457);
					expression53=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new TakeWhileNode(line, handler, currentScope, (Identifier52!=null?Identifier52.getText():null), expression53, languageRegistry, importHandler); 
					}
					break;
				case 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:327:6: ^( FUNC_CALL DropWhile Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1468); 
					match(input, Token.DOWN, null); 
					match(input,DropWhile,FOLLOW_DropWhile_in_functionCall1470); 
					Identifier54=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1472); 
					pushFollow(FOLLOW_expression_in_functionCall1474);
					expression55=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new DropWhileNode(line, handler, currentScope, (Identifier54!=null?Identifier54.getText():null), expression55, languageRegistry, importHandler); 
					}
					break;
				case 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:328:6: ^( FUNC_CALL SplitWith Identifier expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1485); 
					match(input, Token.DOWN, null); 
					match(input,SplitWith,FOLLOW_SplitWith_in_functionCall1487); 
					Identifier56=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall1489); 
					pushFollow(FOLLOW_expression_in_functionCall1491);
					expression57=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SplitWithNode(line, handler, currentScope, (Identifier56!=null?Identifier56.getText():null), expression57, languageRegistry, importHandler); 
					}
					break;
				case 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:329:6: ^( FUNC_CALL Split str= expression sep= expression quoter= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1502); 
					match(input, Token.DOWN, null); 
					match(input,Split,FOLLOW_Split_in_functionCall1504); 
					pushFollow(FOLLOW_expression_in_functionCall1508);
					str=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1512);
					sep=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1516);
					quoter=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SplitNode(line, handler, currentScope, str, sep, quoter, languageRegistry, importHandler); 
					}
					break;
				case 18 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:330:6: ^( FUNC_CALL TypeOf expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1527); 
					match(input, Token.DOWN, null); 
					match(input,TypeOf,FOLLOW_TypeOf_in_functionCall1529); 
					pushFollow(FOLLOW_expression_in_functionCall1531);
					expression58=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new TypeOfNode(line, handler, currentScope, expression58); 
					}
					break;
				case 19 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:331:6: ^( FUNC_CALL Assert msg= expression exp= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1542); 
					match(input, Token.DOWN, null); 
					match(input,Assert,FOLLOW_Assert_in_functionCall1544); 
					pushFollow(FOLLOW_expression_in_functionCall1548);
					msg=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1552);
					exp=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AssertNode(line, handler, currentScope, msg, exp); 
					}
					break;
				case 20 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:332:6: ^( FUNC_CALL Size expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1563); 
					match(input, Token.DOWN, null); 
					match(input,Size,FOLLOW_Size_in_functionCall1565); 
					pushFollow(FOLLOW_expression_in_functionCall1567);
					expression59=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SizeNode(line, handler,currentScope,  expression59); 
					}
					break;
				case 21 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:333:6: ^( FUNC_CALL RPull u= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1578); 
					match(input, Token.DOWN, null); 
					match(input,RPull,FOLLOW_RPull_in_functionCall1580); 
					pushFollow(FOLLOW_expression_in_functionCall1584);
					u=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new RapturePullNode(line, handler, currentScope, u, null); 
					}
					break;
				case 22 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:334:6: ^( FUNC_CALL RPush u= expression v= expression (o= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1595); 
					match(input, Token.DOWN, null); 
					match(input,RPush,FOLLOW_RPush_in_functionCall1597); 
					pushFollow(FOLLOW_expression_in_functionCall1601);
					u=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1605);
					v=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:334:51: (o= expression )?
					int alt24=2;
					int LA24_0 = input.LA(1);
					if ( (LA24_0==Add||LA24_0==And||LA24_0==Bool||LA24_0==Divide||LA24_0==Equals||(LA24_0 >= GT && LA24_0 <= GTEquals)||LA24_0==In||LA24_0==Integer||(LA24_0 >= LOOKUP && LA24_0 <= LTEquals)||LA24_0==Long||(LA24_0 >= Modulus && LA24_0 <= NEquals)||(LA24_0 >= Null && LA24_0 <= Number)||LA24_0==Or||LA24_0==Pow||LA24_0==RANGELOOKUP||LA24_0==SPARSE||LA24_0==Subtract||LA24_0==TERNARY||LA24_0==UNARY_MIN) ) {
						alt24=1;
					}
					switch (alt24) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:334:51: o= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1609);
							o=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new RapturePushNode(line, handler, currentScope, u, v, o); 
					}
					break;
				case 23 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:335:6: ^( FUNC_CALL Transpose expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1621); 
					match(input, Token.DOWN, null); 
					match(input,Transpose,FOLLOW_Transpose_in_functionCall1623); 
					pushFollow(FOLLOW_expression_in_functionCall1625);
					expression60=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new TransposeNode(line, handler, currentScope, expression60); 
					}
					break;
				case 24 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:336:6: ^( FUNC_CALL Keys expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1636); 
					match(input, Token.DOWN, null); 
					match(input,Keys,FOLLOW_Keys_in_functionCall1638); 
					pushFollow(FOLLOW_expression_in_functionCall1640);
					expression61=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new KeysNode(line, handler, currentScope, expression61); 
					}
					break;
				case 25 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:337:6: ^( FUNC_CALL Sort arg= expression asc= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1651); 
					match(input, Token.DOWN, null); 
					match(input,Sort,FOLLOW_Sort_in_functionCall1653); 
					pushFollow(FOLLOW_expression_in_functionCall1657);
					arg=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1661);
					asc=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SortNode(line, handler, currentScope, arg, asc); 
					}
					break;
				case 26 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:338:6: ^( FUNC_CALL Collate arg= expression locale= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1672); 
					match(input, Token.DOWN, null); 
					match(input,Collate,FOLLOW_Collate_in_functionCall1674); 
					pushFollow(FOLLOW_expression_in_functionCall1678);
					arg=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1682);
					locale=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new CollateNode(line, handler, currentScope, arg, locale); 
					}
					break;
				case 27 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:339:6: ^( FUNC_CALL B64Compress expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1693); 
					match(input, Token.DOWN, null); 
					match(input,B64Compress,FOLLOW_B64Compress_in_functionCall1695); 
					pushFollow(FOLLOW_expression_in_functionCall1697);
					expression62=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new B64Compress(line, handler, currentScope, expression62); 
					}
					break;
				case 28 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:340:6: ^( FUNC_CALL B64Decompress expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1708); 
					match(input, Token.DOWN, null); 
					match(input,B64Decompress,FOLLOW_B64Decompress_in_functionCall1710); 
					pushFollow(FOLLOW_expression_in_functionCall1712);
					expression63=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new B64Decompress(line, handler, currentScope, expression63); 
					}
					break;
				case 29 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:341:6: ^( FUNC_CALL Debug expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1723); 
					match(input, Token.DOWN, null); 
					match(input,Debug,FOLLOW_Debug_in_functionCall1725); 
					pushFollow(FOLLOW_expression_in_functionCall1727);
					expression64=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new DebugNode(line, handler, currentScope, expression64); 
					}
					break;
				case 30 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:342:6: ^( FUNC_CALL Date ( exprList )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1738); 
					match(input, Token.DOWN, null); 
					match(input,Date,FOLLOW_Date_in_functionCall1740); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:342:23: ( exprList )?
					int alt25=2;
					int LA25_0 = input.LA(1);
					if ( (LA25_0==EXP_LIST) ) {
						alt25=1;
					}
					switch (alt25) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:342:23: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall1742);
							exprList65=exprList();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new DateNode(line, handler, currentScope, exprList65); 
					}
					break;
				case 31 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:343:6: ^( FUNC_CALL Time ( expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1755); 
					match(input, Token.DOWN, null); 
					match(input,Time,FOLLOW_Time_in_functionCall1757); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:343:23: ( expression )?
					int alt26=2;
					int LA26_0 = input.LA(1);
					if ( (LA26_0==Add||LA26_0==And||LA26_0==Bool||LA26_0==Divide||LA26_0==Equals||(LA26_0 >= GT && LA26_0 <= GTEquals)||LA26_0==In||LA26_0==Integer||(LA26_0 >= LOOKUP && LA26_0 <= LTEquals)||LA26_0==Long||(LA26_0 >= Modulus && LA26_0 <= NEquals)||(LA26_0 >= Null && LA26_0 <= Number)||LA26_0==Or||LA26_0==Pow||LA26_0==RANGELOOKUP||LA26_0==SPARSE||LA26_0==Subtract||LA26_0==TERNARY||LA26_0==UNARY_MIN) ) {
						alt26=1;
					}
					switch (alt26) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:343:23: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1759);
							expression66=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new TimeNode(line, handler, currentScope, expression66); 
					}
					break;
				case 32 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:344:6: ^( FUNC_CALL Evals expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1772); 
					match(input, Token.DOWN, null); 
					match(input,Evals,FOLLOW_Evals_in_functionCall1774); 
					pushFollow(FOLLOW_expression_in_functionCall1776);
					expression67=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new QuotedStringNode(line, handler, currentScope, expression67); 
					}
					break;
				case 33 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:345:6: ^( FUNC_CALL Vars )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1788); 
					match(input, Token.DOWN, null); 
					match(input,Vars,FOLLOW_Vars_in_functionCall1790); 
					match(input, Token.UP, null); 

					 node = new VarsNode(line, handler, currentScope); 
					}
					break;
				case 34 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:346:6: ^( FUNC_CALL ReadDir expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1801); 
					match(input, Token.DOWN, null); 
					match(input,ReadDir,FOLLOW_ReadDir_in_functionCall1803); 
					pushFollow(FOLLOW_expression_in_functionCall1805);
					expression68=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ReadDirNode(line, handler, currentScope, expression68); 
					}
					break;
				case 35 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:347:6: ^( FUNC_CALL MkDir expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1816); 
					match(input, Token.DOWN, null); 
					match(input,MkDir,FOLLOW_MkDir_in_functionCall1818); 
					pushFollow(FOLLOW_expression_in_functionCall1820);
					expression69=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MkDirNode(line, handler, currentScope, expression69); 
					}
					break;
				case 36 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:348:6: ^( FUNC_CALL IsFile expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1831); 
					match(input, Token.DOWN, null); 
					match(input,IsFile,FOLLOW_IsFile_in_functionCall1833); 
					pushFollow(FOLLOW_expression_in_functionCall1835);
					expression70=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new IsFileNode(line, handler, currentScope, expression70); 
					}
					break;
				case 37 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:349:6: ^( FUNC_CALL IsFolder expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1846); 
					match(input, Token.DOWN, null); 
					match(input,IsFolder,FOLLOW_IsFolder_in_functionCall1848); 
					pushFollow(FOLLOW_expression_in_functionCall1850);
					expression71=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new IsFolderNode(line, handler, currentScope, expression71); 
					}
					break;
				case 38 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:350:6: ^( FUNC_CALL File exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1861); 
					match(input, Token.DOWN, null); 
					match(input,File,FOLLOW_File_in_functionCall1863); 
					pushFollow(FOLLOW_exprList_in_functionCall1865);
					exprList72=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new FileNode(line, handler, currentScope, exprList72); 
					}
					break;
				case 39 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:351:6: ^( FUNC_CALL Copy s= expression t= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1876); 
					match(input, Token.DOWN, null); 
					match(input,Copy,FOLLOW_Copy_in_functionCall1878); 
					pushFollow(FOLLOW_expression_in_functionCall1882);
					s=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall1886);
					t=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new CopyNode(line, handler, currentScope, s, t); 
					}
					break;
				case 40 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:352:6: ^( FUNC_CALL Archive expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1897); 
					match(input, Token.DOWN, null); 
					match(input,Archive,FOLLOW_Archive_in_functionCall1899); 
					pushFollow(FOLLOW_expression_in_functionCall1901);
					expression73=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ArchiveNode(line, handler, currentScope, expression73); 
					}
					break;
				case 41 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:353:6: ^( FUNC_CALL Delete expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1912); 
					match(input, Token.DOWN, null); 
					match(input,Delete,FOLLOW_Delete_in_functionCall1914); 
					pushFollow(FOLLOW_expression_in_functionCall1916);
					expression74=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new DeleteNode(line, handler, currentScope, expression74); 
					}
					break;
				case 42 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:354:6: ^( FUNC_CALL Port expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1927); 
					match(input, Token.DOWN, null); 
					match(input,Port,FOLLOW_Port_in_functionCall1929); 
					pushFollow(FOLLOW_expression_in_functionCall1931);
					expression75=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PortNode(line, handler, currentScope, expression75); 
					}
					break;
				case 43 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:355:6: ^( FUNC_CALL Suspend expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1942); 
					match(input, Token.DOWN, null); 
					match(input,Suspend,FOLLOW_Suspend_in_functionCall1944); 
					pushFollow(FOLLOW_expression_in_functionCall1946);
					expression76=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SuspendNode(line, handler, currentScope, expression76); 
					}
					break;
				case 44 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:356:6: ^( FUNC_CALL Close expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1957); 
					match(input, Token.DOWN, null); 
					match(input,Close,FOLLOW_Close_in_functionCall1959); 
					pushFollow(FOLLOW_expression_in_functionCall1961);
					expression77=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new CloseNode(line, handler, currentScope, expression77); 
					}
					break;
				case 45 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:357:6: ^( FUNC_CALL Timer ( expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1972); 
					match(input, Token.DOWN, null); 
					match(input,Timer,FOLLOW_Timer_in_functionCall1974); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:357:24: ( expression )?
					int alt27=2;
					int LA27_0 = input.LA(1);
					if ( (LA27_0==Add||LA27_0==And||LA27_0==Bool||LA27_0==Divide||LA27_0==Equals||(LA27_0 >= GT && LA27_0 <= GTEquals)||LA27_0==In||LA27_0==Integer||(LA27_0 >= LOOKUP && LA27_0 <= LTEquals)||LA27_0==Long||(LA27_0 >= Modulus && LA27_0 <= NEquals)||(LA27_0 >= Null && LA27_0 <= Number)||LA27_0==Or||LA27_0==Pow||LA27_0==RANGELOOKUP||LA27_0==SPARSE||LA27_0==Subtract||LA27_0==TERNARY||LA27_0==UNARY_MIN) ) {
						alt27=1;
					}
					switch (alt27) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:357:24: expression
							{
							pushFollow(FOLLOW_expression_in_functionCall1976);
							expression78=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new TimerNode(line, handler, currentScope, expression78); 
					}
					break;
				case 46 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:358:6: ^( FUNC_CALL Merge exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall1988); 
					match(input, Token.DOWN, null); 
					match(input,Merge,FOLLOW_Merge_in_functionCall1990); 
					pushFollow(FOLLOW_exprList_in_functionCall1992);
					exprList79=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MergeNode(line, handler, currentScope, exprList79); 
					}
					break;
				case 47 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:359:6: ^( FUNC_CALL Format exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2003); 
					match(input, Token.DOWN, null); 
					match(input,Format,FOLLOW_Format_in_functionCall2005); 
					pushFollow(FOLLOW_exprList_in_functionCall2007);
					exprList80=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new FormatNode(line, handler, currentScope, exprList80); 
					}
					break;
				case 48 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:360:6: ^( FUNC_CALL MergeIf exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2018); 
					match(input, Token.DOWN, null); 
					match(input,MergeIf,FOLLOW_MergeIf_in_functionCall2020); 
					pushFollow(FOLLOW_exprList_in_functionCall2022);
					exprList81=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MergeIfNode(line, handler, currentScope, exprList81); 
					}
					break;
				case 49 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:361:6: ^( FUNC_CALL Replace v= expression s= expression t= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2033); 
					match(input, Token.DOWN, null); 
					match(input,Replace,FOLLOW_Replace_in_functionCall2035); 
					pushFollow(FOLLOW_expression_in_functionCall2039);
					v=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2043);
					s=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2047);
					t=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ReplaceNode(line, handler, currentScope, v, s, t); 
					}
					break;
				case 50 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:362:6: ^( FUNC_CALL Message a= expression m= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2058); 
					match(input, Token.DOWN, null); 
					match(input,Message,FOLLOW_Message_in_functionCall2060); 
					pushFollow(FOLLOW_expression_in_functionCall2064);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2068);
					m=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MessageNode(line, handler, currentScope, a, m); 
					}
					break;
				case 51 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:363:6: ^( FUNC_CALL PutCache v= expression n= expression (exp= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2079); 
					match(input, Token.DOWN, null); 
					match(input,PutCache,FOLLOW_PutCache_in_functionCall2081); 
					pushFollow(FOLLOW_expression_in_functionCall2085);
					v=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2089);
					n=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:363:56: (exp= expression )?
					int alt28=2;
					int LA28_0 = input.LA(1);
					if ( (LA28_0==Add||LA28_0==And||LA28_0==Bool||LA28_0==Divide||LA28_0==Equals||(LA28_0 >= GT && LA28_0 <= GTEquals)||LA28_0==In||LA28_0==Integer||(LA28_0 >= LOOKUP && LA28_0 <= LTEquals)||LA28_0==Long||(LA28_0 >= Modulus && LA28_0 <= NEquals)||(LA28_0 >= Null && LA28_0 <= Number)||LA28_0==Or||LA28_0==Pow||LA28_0==RANGELOOKUP||LA28_0==SPARSE||LA28_0==Subtract||LA28_0==TERNARY||LA28_0==UNARY_MIN) ) {
						alt28=1;
					}
					switch (alt28) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:363:56: exp= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall2093);
							exp=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new PutCacheNode(line, handler, currentScope, v, n, exp); 
					}
					break;
				case 52 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:364:6: ^( FUNC_CALL GetCache n= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2105); 
					match(input, Token.DOWN, null); 
					match(input,GetCache,FOLLOW_GetCache_in_functionCall2107); 
					pushFollow(FOLLOW_expression_in_functionCall2111);
					n=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new GetCacheNode(line, handler, currentScope, n); 
					}
					break;
				case 53 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:365:6: ^( FUNC_CALL Difference exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2122); 
					match(input, Token.DOWN, null); 
					match(input,Difference,FOLLOW_Difference_in_functionCall2124); 
					pushFollow(FOLLOW_exprList_in_functionCall2126);
					exprList82=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new DifferenceNode(line, handler, currentScope, exprList82); 
					}
					break;
				case 54 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:366:6: ^( FUNC_CALL Join exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2137); 
					match(input, Token.DOWN, null); 
					match(input,Join,FOLLOW_Join_in_functionCall2139); 
					pushFollow(FOLLOW_exprList_in_functionCall2141);
					exprList83=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new JoinNode(line, handler, currentScope, exprList83); 
					}
					break;
				case 55 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:367:6: ^( FUNC_CALL Unique exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2152); 
					match(input, Token.DOWN, null); 
					match(input,Unique,FOLLOW_Unique_in_functionCall2154); 
					pushFollow(FOLLOW_exprList_in_functionCall2156);
					exprList84=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new UniqueNode(line, handler, currentScope, exprList84); 
					}
					break;
				case 56 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:368:6: ^( FUNC_CALL Json expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2167); 
					match(input, Token.DOWN, null); 
					match(input,Json,FOLLOW_Json_in_functionCall2169); 
					pushFollow(FOLLOW_expression_in_functionCall2171);
					expression85=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new JsonNode(line, handler, currentScope, expression85); 
					}
					break;
				case 57 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:370:6: ^( FUNC_CALL MD5 expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2183); 
					match(input, Token.DOWN, null); 
					match(input,MD5,FOLLOW_MD5_in_functionCall2185); 
					pushFollow(FOLLOW_expression_in_functionCall2188);
					expression86=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MD5Node(line, handler, currentScope, expression86); 
					}
					break;
				case 58 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:371:6: ^( FUNC_CALL FromJson expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2199); 
					match(input, Token.DOWN, null); 
					match(input,FromJson,FOLLOW_FromJson_in_functionCall2201); 
					pushFollow(FOLLOW_expression_in_functionCall2203);
					expression87=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new FromJsonNode(line, handler, currentScope, expression87); 
					}
					break;
				case 59 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:372:6: ^( FUNC_CALL UrlEncode expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2214); 
					match(input, Token.DOWN, null); 
					match(input,UrlEncode,FOLLOW_UrlEncode_in_functionCall2216); 
					pushFollow(FOLLOW_expression_in_functionCall2218);
					expression88=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new UrlEncodeNode(line, handler, currentScope, expression88); 
					}
					break;
				case 60 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:373:6: ^( FUNC_CALL UrlDecode expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2229); 
					match(input, Token.DOWN, null); 
					match(input,UrlDecode,FOLLOW_UrlDecode_in_functionCall2231); 
					pushFollow(FOLLOW_expression_in_functionCall2233);
					expression89=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new UrlDecodeNode(line, handler, currentScope, expression89); 
					}
					break;
				case 61 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:374:6: ^( FUNC_CALL Uuid )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2244); 
					match(input, Token.DOWN, null); 
					match(input,Uuid,FOLLOW_Uuid_in_functionCall2246); 
					match(input, Token.UP, null); 

					 node = new UuidNode(line, handler, currentScope); 
					}
					break;
				case 62 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:375:6: ^( FUNC_CALL Remove Identifier k= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2257); 
					match(input, Token.DOWN, null); 
					match(input,Remove,FOLLOW_Remove_in_functionCall2259); 
					Identifier90=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall2261); 
					pushFollow(FOLLOW_expression_in_functionCall2265);
					k=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new RemoveNode(line, handler, currentScope, (Identifier90!=null?Identifier90.getText():null), k); 
					}
					break;
				case 63 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:376:6: ^( FUNC_CALL AsyncCall s= expression (p= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2276); 
					match(input, Token.DOWN, null); 
					match(input,AsyncCall,FOLLOW_AsyncCall_in_functionCall2278); 
					pushFollow(FOLLOW_expression_in_functionCall2282);
					s=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:376:42: (p= expression )?
					int alt29=2;
					int LA29_0 = input.LA(1);
					if ( (LA29_0==Add||LA29_0==And||LA29_0==Bool||LA29_0==Divide||LA29_0==Equals||(LA29_0 >= GT && LA29_0 <= GTEquals)||LA29_0==In||LA29_0==Integer||(LA29_0 >= LOOKUP && LA29_0 <= LTEquals)||LA29_0==Long||(LA29_0 >= Modulus && LA29_0 <= NEquals)||(LA29_0 >= Null && LA29_0 <= Number)||LA29_0==Or||LA29_0==Pow||LA29_0==RANGELOOKUP||LA29_0==SPARSE||LA29_0==Subtract||LA29_0==TERNARY||LA29_0==UNARY_MIN) ) {
						alt29=1;
					}
					switch (alt29) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:376:42: p= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall2286);
							p=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new AsyncCallNode(line, handler, currentScope, s, p); 
					}
					break;
				case 64 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:377:6: ^( FUNC_CALL AsyncCallScript r= expression s= expression (p= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2298); 
					match(input, Token.DOWN, null); 
					match(input,AsyncCallScript,FOLLOW_AsyncCallScript_in_functionCall2300); 
					pushFollow(FOLLOW_expression_in_functionCall2304);
					r=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2308);
					s=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:377:61: (p= expression )?
					int alt30=2;
					int LA30_0 = input.LA(1);
					if ( (LA30_0==Add||LA30_0==And||LA30_0==Bool||LA30_0==Divide||LA30_0==Equals||(LA30_0 >= GT && LA30_0 <= GTEquals)||LA30_0==In||LA30_0==Integer||(LA30_0 >= LOOKUP && LA30_0 <= LTEquals)||LA30_0==Long||(LA30_0 >= Modulus && LA30_0 <= NEquals)||(LA30_0 >= Null && LA30_0 <= Number)||LA30_0==Or||LA30_0==Pow||LA30_0==RANGELOOKUP||LA30_0==SPARSE||LA30_0==Subtract||LA30_0==TERNARY||LA30_0==UNARY_MIN) ) {
						alt30=1;
					}
					switch (alt30) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:377:61: p= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall2312);
							p=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new AsyncCallScriptNode(line, handler, currentScope, r, s, p); 
					}
					break;
				case 65 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:378:6: ^( FUNC_CALL AsyncStatus expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2324); 
					match(input, Token.DOWN, null); 
					match(input,AsyncStatus,FOLLOW_AsyncStatus_in_functionCall2326); 
					pushFollow(FOLLOW_expression_in_functionCall2328);
					expression91=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AsyncStatusNode(line, handler, currentScope, expression91); 
					}
					break;
				case 66 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:379:6: ^( FUNC_CALL SuspendWait exprList )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2339); 
					match(input, Token.DOWN, null); 
					match(input,SuspendWait,FOLLOW_SuspendWait_in_functionCall2341); 
					pushFollow(FOLLOW_exprList_in_functionCall2343);
					exprList92=exprList();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SuspendWaitNode(line, handler, currentScope, exprList92); 
					}
					break;
				case 67 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:380:6: ^( FUNC_CALL Wait d= expression (in= expression retry= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2354); 
					match(input, Token.DOWN, null); 
					match(input,Wait,FOLLOW_Wait_in_functionCall2356); 
					pushFollow(FOLLOW_expression_in_functionCall2360);
					d=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:380:36: (in= expression retry= expression )?
					int alt31=2;
					int LA31_0 = input.LA(1);
					if ( (LA31_0==Add||LA31_0==And||LA31_0==Bool||LA31_0==Divide||LA31_0==Equals||(LA31_0 >= GT && LA31_0 <= GTEquals)||LA31_0==In||LA31_0==Integer||(LA31_0 >= LOOKUP && LA31_0 <= LTEquals)||LA31_0==Long||(LA31_0 >= Modulus && LA31_0 <= NEquals)||(LA31_0 >= Null && LA31_0 <= Number)||LA31_0==Or||LA31_0==Pow||LA31_0==RANGELOOKUP||LA31_0==SPARSE||LA31_0==Subtract||LA31_0==TERNARY||LA31_0==UNARY_MIN) ) {
						alt31=1;
					}
					switch (alt31) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:380:37: in= expression retry= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall2365);
							in=expression();
							state._fsp--;

							pushFollow(FOLLOW_expression_in_functionCall2369);
							retry=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new WaitNode(line, handler, currentScope, d, in, retry); 
					}
					break;
				case 68 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:381:6: ^( FUNC_CALL Signal d= expression v= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2382); 
					match(input, Token.DOWN, null); 
					match(input,Signal,FOLLOW_Signal_in_functionCall2384); 
					pushFollow(FOLLOW_expression_in_functionCall2388);
					d=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2392);
					v=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SignalNode(line, handler, currentScope, d, v); 
					}
					break;
				case 69 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:382:6: ^( FUNC_CALL Chain s= expression (p= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2403); 
					match(input, Token.DOWN, null); 
					match(input,Chain,FOLLOW_Chain_in_functionCall2405); 
					pushFollow(FOLLOW_expression_in_functionCall2409);
					s=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:382:38: (p= expression )?
					int alt32=2;
					int LA32_0 = input.LA(1);
					if ( (LA32_0==Add||LA32_0==And||LA32_0==Bool||LA32_0==Divide||LA32_0==Equals||(LA32_0 >= GT && LA32_0 <= GTEquals)||LA32_0==In||LA32_0==Integer||(LA32_0 >= LOOKUP && LA32_0 <= LTEquals)||LA32_0==Long||(LA32_0 >= Modulus && LA32_0 <= NEquals)||(LA32_0 >= Null && LA32_0 <= Number)||LA32_0==Or||LA32_0==Pow||LA32_0==RANGELOOKUP||LA32_0==SPARSE||LA32_0==Subtract||LA32_0==TERNARY||LA32_0==UNARY_MIN) ) {
						alt32=1;
					}
					switch (alt32) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:382:38: p= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall2413);
							p=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new ChainNode(line, handler, currentScope, s, p); 
					}
					break;
				case 70 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:383:6: ^( FUNC_CALL Sleep expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2425); 
					match(input, Token.DOWN, null); 
					match(input,Sleep,FOLLOW_Sleep_in_functionCall2427); 
					pushFollow(FOLLOW_expression_in_functionCall2429);
					expression93=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SleepNode(line, handler,currentScope,  expression93); 
					}
					break;
				case 71 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:384:6: ^( FUNC_CALL Matches s= expression r= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2440); 
					match(input, Token.DOWN, null); 
					match(input,Matches,FOLLOW_Matches_in_functionCall2442); 
					pushFollow(FOLLOW_expression_in_functionCall2446);
					s=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2450);
					r=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MatchesNode(line, handler, currentScope, s, r); 
					}
					break;
				case 72 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:385:6: ^( FUNC_CALL Cast a= expression b= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2461); 
					match(input, Token.DOWN, null); 
					match(input,Cast,FOLLOW_Cast_in_functionCall2463); 
					pushFollow(FOLLOW_expression_in_functionCall2467);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2471);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new CastNode(line, handler, currentScope, a, b, languageRegistry, namespaceStack.asPrefix()); 
					}
					break;
				case 73 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:386:6: ^( FUNC_CALL Rand expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2482); 
					match(input, Token.DOWN, null); 
					match(input,Rand,FOLLOW_Rand_in_functionCall2484); 
					pushFollow(FOLLOW_expression_in_functionCall2486);
					expression94=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new RandNode(line, handler, currentScope, expression94); 
					}
					break;
				case 74 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:387:6: ^( FUNC_CALL Round v= expression dp= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2497); 
					match(input, Token.DOWN, null); 
					match(input,Round,FOLLOW_Round_in_functionCall2499); 
					pushFollow(FOLLOW_expression_in_functionCall2503);
					v=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2507);
					dp=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new RoundNode(line, handler, currentScope, v, dp); 
					}
					break;
				case 75 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:388:6: ^( FUNC_CALL Lib expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2518); 
					match(input, Token.DOWN, null); 
					match(input,Lib,FOLLOW_Lib_in_functionCall2520); 
					pushFollow(FOLLOW_expression_in_functionCall2522);
					expression95=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new LibNode(line, handler, currentScope, expression95); 
					}
					break;
				case 76 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:389:6: ^( FUNC_CALL Call a= expression b= expression c= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2533); 
					match(input, Token.DOWN, null); 
					match(input,Call,FOLLOW_Call_in_functionCall2535); 
					pushFollow(FOLLOW_expression_in_functionCall2539);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2543);
					b=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2547);
					c=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new CallNode(line, handler, currentScope, a, b, c); 
					}
					break;
				case 77 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:390:6: ^( FUNC_CALL New a= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2558); 
					match(input, Token.DOWN, null); 
					match(input,New,FOLLOW_New_in_functionCall2560); 
					pushFollow(FOLLOW_expression_in_functionCall2565);
					a=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new NewNode(line, handler, currentScope, a, languageRegistry, namespaceStack.asPrefix()); 
					}
					break;
				case 78 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:391:6: ^( FUNC_CALL GenSchema a= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2576); 
					match(input, Token.DOWN, null); 
					match(input,GenSchema,FOLLOW_GenSchema_in_functionCall2578); 
					pushFollow(FOLLOW_expression_in_functionCall2582);
					a=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new GenSchemaNode(line, handler, currentScope, a, languageRegistry, namespaceStack.asPrefix()); 
					}
					break;
				case 79 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:392:6: ^( FUNC_CALL GenStruct Identifier a= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2593); 
					match(input, Token.DOWN, null); 
					match(input,GenStruct,FOLLOW_GenStruct_in_functionCall2595); 
					Identifier96=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall2597); 
					pushFollow(FOLLOW_expression_in_functionCall2601);
					a=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new GenStructNode(line, handler, currentScope, (Identifier96!=null?Identifier96.getText():null), a, languageRegistry, namespaceStack.asPrefix()); 
					}
					break;
				case 80 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:393:6: ^( FUNC_CALL Template t= expression p= expression )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2612); 
					match(input, Token.DOWN, null); 
					match(input,Template,FOLLOW_Template_in_functionCall2614); 
					pushFollow(FOLLOW_expression_in_functionCall2618);
					t=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_functionCall2622);
					p=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new TemplateNode(line, handler, currentScope, t, p); 
					}
					break;
				case 81 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:394:6: ^( FUNC_CALL Spawn p= expression (e= expression f= expression )? )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2633); 
					match(input, Token.DOWN, null); 
					match(input,Spawn,FOLLOW_Spawn_in_functionCall2635); 
					pushFollow(FOLLOW_expression_in_functionCall2639);
					p=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:394:37: (e= expression f= expression )?
					int alt33=2;
					int LA33_0 = input.LA(1);
					if ( (LA33_0==Add||LA33_0==And||LA33_0==Bool||LA33_0==Divide||LA33_0==Equals||(LA33_0 >= GT && LA33_0 <= GTEquals)||LA33_0==In||LA33_0==Integer||(LA33_0 >= LOOKUP && LA33_0 <= LTEquals)||LA33_0==Long||(LA33_0 >= Modulus && LA33_0 <= NEquals)||(LA33_0 >= Null && LA33_0 <= Number)||LA33_0==Or||LA33_0==Pow||LA33_0==RANGELOOKUP||LA33_0==SPARSE||LA33_0==Subtract||LA33_0==TERNARY||LA33_0==UNARY_MIN) ) {
						alt33=1;
					}
					switch (alt33) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:394:38: e= expression f= expression
							{
							pushFollow(FOLLOW_expression_in_functionCall2644);
							e=expression();
							state._fsp--;

							pushFollow(FOLLOW_expression_in_functionCall2648);
							f=expression();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new SpawnNode(line, handler, currentScope, p, e, f); 
					}
					break;
				case 82 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:395:6: ^( FUNC_CALL Defined Identifier )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2661); 
					match(input, Token.DOWN, null); 
					match(input,Defined,FOLLOW_Defined_in_functionCall2663); 
					Identifier97=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_functionCall2665); 
					match(input, Token.UP, null); 

					 node = new DefinedNode(line, handler, currentScope, (Identifier97!=null?Identifier97.getText():null), namespaceStack.asPrefix()) ; 
					}
					break;
				case 83 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:396:6: ^( FUNC_CALL Defined lookup )
					{
					match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_functionCall2676); 
					match(input, Token.DOWN, null); 
					match(input,Defined,FOLLOW_Defined_in_functionCall2678); 
					pushFollow(FOLLOW_lookup_in_functionCall2680);
					lookup98=lookup();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new DefinedNode(line, handler, currentScope, lookup98, namespaceStack.asPrefix()) ; 
					}
					break;
				case 84 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:397:6: ^( KERNEL_CALL KernelIdentifier ( exprList )? )
					{
					match(input,KERNEL_CALL,FOLLOW_KERNEL_CALL_in_functionCall2691); 
					match(input, Token.DOWN, null); 
					KernelIdentifier99=(CommonTree)match(input,KernelIdentifier,FOLLOW_KernelIdentifier_in_functionCall2693); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:397:37: ( exprList )?
					int alt34=2;
					int LA34_0 = input.LA(1);
					if ( (LA34_0==EXP_LIST) ) {
						alt34=1;
					}
					switch (alt34) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:397:37: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall2695);
							exprList100=exprList();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new KernelCallNode(line, handler, currentScope, (KernelIdentifier99!=null?KernelIdentifier99.getText():null), exprList100); 
					}
					break;
				case 85 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:398:6: ^( QUALIFIED_FUNC_CALL DottedIdentifier ( exprList )? )
					{
					match(input,QUALIFIED_FUNC_CALL,FOLLOW_QUALIFIED_FUNC_CALL_in_functionCall2707); 
					match(input, Token.DOWN, null); 
					DottedIdentifier101=(CommonTree)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_functionCall2709); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:398:45: ( exprList )?
					int alt35=2;
					int LA35_0 = input.LA(1);
					if ( (LA35_0==EXP_LIST) ) {
						alt35=1;
					}
					switch (alt35) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:398:45: exprList
							{
							pushFollow(FOLLOW_exprList_in_functionCall2711);
							exprList102=exprList();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = new QualifiedFuncCallNode(line, handler, currentScope, (DottedIdentifier101!=null?DottedIdentifier101.getText():null),
					                                                                      exprList102, languageRegistry, importHandler, namespaceStack.asPrefix()); 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "functionCall"



	// $ANTLR start "ifStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:402:1: ifStatement returns [ReflexNode node] : ^( IF ( ^( EXP expression b1= block ) )+ ( ^( EXP b2= block ) )? ) ;
	public final ReflexNode ifStatement() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode b1 =null;
		ReflexNode b2 =null;
		ReflexNode expression103 =null;


		  CommonTree ahead = (CommonTree) input.LT(1);
		  int line = ahead.getToken().getLine();
		  IfNode ifNode = new IfNode(line, handler, currentScope);
		  node = ifNode;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:409:3: ( ^( IF ( ^( EXP expression b1= block ) )+ ( ^( EXP b2= block ) )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:409:6: ^( IF ( ^( EXP expression b1= block ) )+ ( ^( EXP b2= block ) )? )
			{
			match(input,IF,FOLLOW_IF_in_ifStatement2740); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:410:8: ( ^( EXP expression b1= block ) )+
			int cnt37=0;
			loop37:
			while (true) {
				int alt37=2;
				int LA37_0 = input.LA(1);
				if ( (LA37_0==EXP) ) {
					int LA37_1 = input.LA(2);
					if ( (LA37_1==DOWN) ) {
						int LA37_3 = input.LA(3);
						if ( (LA37_3==Add||LA37_3==And||LA37_3==Bool||LA37_3==Divide||LA37_3==Equals||(LA37_3 >= GT && LA37_3 <= GTEquals)||LA37_3==In||LA37_3==Integer||(LA37_3 >= LOOKUP && LA37_3 <= LTEquals)||LA37_3==Long||(LA37_3 >= Modulus && LA37_3 <= NEquals)||(LA37_3 >= Null && LA37_3 <= Number)||LA37_3==Or||LA37_3==Pow||LA37_3==RANGELOOKUP||LA37_3==SPARSE||LA37_3==Subtract||LA37_3==TERNARY||LA37_3==UNARY_MIN) ) {
							alt37=1;
						}

					}

				}

				switch (alt37) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:410:9: ^( EXP expression b1= block )
					{
					match(input,EXP,FOLLOW_EXP_in_ifStatement2751); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_ifStatement2753);
					expression103=expression();
					state._fsp--;

					pushFollow(FOLLOW_block_in_ifStatement2757);
					b1=block();
					state._fsp--;

					match(input, Token.UP, null); 

					ifNode.addChoice(expression103,b1);
					}
					break;

				default :
					if ( cnt37 >= 1 ) break loop37;
					EarlyExitException eee = new EarlyExitException(37, input);
					throw eee;
				}
				cnt37++;
			}

			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:411:8: ( ^( EXP b2= block ) )?
			int alt38=2;
			int LA38_0 = input.LA(1);
			if ( (LA38_0==EXP) ) {
				alt38=1;
			}
			switch (alt38) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:411:9: ^( EXP b2= block )
					{
					match(input,EXP,FOLLOW_EXP_in_ifStatement2772); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_block_in_ifStatement2776);
					b2=block();
					state._fsp--;

					match(input, Token.UP, null); 

					ifNode.addChoice(new AtomNode(line, handler, currentScope, true),b2);
					}
					break;

			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "ifStatement"



	// $ANTLR start "forStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:415:1: forStatement returns [ReflexNode node] : ( ^( FORLIST Identifier a= expression block ) | ^( FORTO Identifier a= expression b= expression block ) );
	public final ReflexNode forStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree Identifier104=null;
		CommonTree Identifier106=null;
		ReflexNode a =null;
		ReflexNode b =null;
		ReflexNode block105 =null;
		ReflexNode block107 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:420:3: ( ^( FORLIST Identifier a= expression block ) | ^( FORTO Identifier a= expression b= expression block ) )
			int alt39=2;
			int LA39_0 = input.LA(1);
			if ( (LA39_0==FORLIST) ) {
				alt39=1;
			}
			else if ( (LA39_0==FORTO) ) {
				alt39=2;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 39, 0, input);
				throw nvae;
			}

			switch (alt39) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:421:6: ^( FORLIST Identifier a= expression block )
					{
					match(input,FORLIST,FOLLOW_FORLIST_in_forStatement2826); 
					match(input, Token.DOWN, null); 
					Identifier104=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_forStatement2828); 
					pushFollow(FOLLOW_expression_in_forStatement2832);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_block_in_forStatement2834);
					block105=block();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ForInStatementNode(line, handler, currentScope, (Identifier104!=null?Identifier104.getText():null), a, block105); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:422:6: ^( FORTO Identifier a= expression b= expression block )
					{
					match(input,FORTO,FOLLOW_FORTO_in_forStatement2845); 
					match(input, Token.DOWN, null); 
					Identifier106=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_forStatement2847); 
					pushFollow(FOLLOW_expression_in_forStatement2851);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_forStatement2855);
					b=expression();
					state._fsp--;

					pushFollow(FOLLOW_block_in_forStatement2857);
					block107=block();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ForStatementNode(line, handler, currentScope, (Identifier106!=null?Identifier106.getText():null), a, b, block107); 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "forStatement"



	// $ANTLR start "pforStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:425:1: pforStatement returns [ReflexNode node] : ( ^( PFORLIST Identifier a= expression block ) | ^( PFORTO Identifier a= expression b= expression block ) );
	public final ReflexNode pforStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree Identifier108=null;
		CommonTree Identifier110=null;
		ReflexNode a =null;
		ReflexNode b =null;
		ReflexNode block109 =null;
		ReflexNode block111 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:430:3: ( ^( PFORLIST Identifier a= expression block ) | ^( PFORTO Identifier a= expression b= expression block ) )
			int alt40=2;
			int LA40_0 = input.LA(1);
			if ( (LA40_0==PFORLIST) ) {
				alt40=1;
			}
			else if ( (LA40_0==PFORTO) ) {
				alt40=2;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 40, 0, input);
				throw nvae;
			}

			switch (alt40) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:431:6: ^( PFORLIST Identifier a= expression block )
					{
					match(input,PFORLIST,FOLLOW_PFORLIST_in_pforStatement2888); 
					match(input, Token.DOWN, null); 
					Identifier108=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_pforStatement2890); 
					pushFollow(FOLLOW_expression_in_pforStatement2894);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_block_in_pforStatement2896);
					block109=block();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PForInStatementNode(line, handler, currentScope, (Identifier108!=null?Identifier108.getText():null), a, block109); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:432:6: ^( PFORTO Identifier a= expression b= expression block )
					{
					match(input,PFORTO,FOLLOW_PFORTO_in_pforStatement2907); 
					match(input, Token.DOWN, null); 
					Identifier110=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_pforStatement2909); 
					pushFollow(FOLLOW_expression_in_pforStatement2913);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_pforStatement2917);
					b=expression();
					state._fsp--;

					pushFollow(FOLLOW_block_in_pforStatement2919);
					block111=block();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PForStatementNode(line, handler, currentScope, (Identifier110!=null?Identifier110.getText():null), a, b, block111); 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "pforStatement"



	// $ANTLR start "whileStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:435:1: whileStatement returns [ReflexNode node] : ^( While expression block ) ;
	public final ReflexNode whileStatement() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode expression112 =null;
		ReflexNode block113 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:440:3: ( ^( While expression block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:440:6: ^( While expression block )
			{
			match(input,While,FOLLOW_While_in_whileStatement2946); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_expression_in_whileStatement2948);
			expression112=expression();
			state._fsp--;

			pushFollow(FOLLOW_block_in_whileStatement2950);
			block113=block();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new WhileStatementNode(line, handler, currentScope,  expression112, block113); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "whileStatement"



	// $ANTLR start "guardedStatement"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:443:1: guardedStatement returns [ReflexNode node] : ^( Try g= block Identifier c= block ) ;
	public final ReflexNode guardedStatement() throws RecognitionException {
		ReflexNode node = null;


		CommonTree Identifier114=null;
		ReflexNode g =null;
		ReflexNode c =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:448:3: ( ^( Try g= block Identifier c= block ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:448:5: ^( Try g= block Identifier c= block )
			{
			match(input,Try,FOLLOW_Try_in_guardedStatement2976); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_block_in_guardedStatement2980);
			g=block();
			state._fsp--;

			Identifier114=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_guardedStatement2982); 
			pushFollow(FOLLOW_block_in_guardedStatement2986);
			c=block();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new GuardedNode(line, handler, currentScope, g, (Identifier114!=null?Identifier114.getText():null), c); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "guardedStatement"



	// $ANTLR start "sparsesep"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:451:1: sparsesep : '-' ;
	public final void sparsesep() throws RecognitionException {
		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:451:10: ( '-' )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:452:4: '-'
			{
			match(input,Subtract,FOLLOW_Subtract_in_sparsesep3002); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "sparsesep"



	// $ANTLR start "sparsematrix"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:454:1: sparsematrix returns [int dim] : ^( SPARSE ( sparsesep )+ ) ;
	public final int sparsematrix() throws RecognitionException {
		int dim = 0;



		   dim = 1;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:458:4: ( ^( SPARSE ( sparsesep )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:458:6: ^( SPARSE ( sparsesep )+ )
			{
			match(input,SPARSE,FOLLOW_SPARSE_in_sparsematrix3023); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:458:15: ( sparsesep )+
			int cnt41=0;
			loop41:
			while (true) {
				int alt41=2;
				int LA41_0 = input.LA(1);
				if ( (LA41_0==Subtract) ) {
					alt41=1;
				}

				switch (alt41) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:458:16: sparsesep
					{
					pushFollow(FOLLOW_sparsesep_in_sparsematrix3026);
					sparsesep();
					state._fsp--;

					 dim++; 
					}
					break;

				default :
					if ( cnt41 >= 1 ) break loop41;
					EarlyExitException eee = new EarlyExitException(41, input);
					throw eee;
				}
				cnt41++;
			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return dim;
	}
	// $ANTLR end "sparsematrix"



	// $ANTLR start "idList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:461:1: idList returns [java.util.List i] : ^( ID_LIST ( Identifier )+ ) ;
	public final java.util.List idList() throws RecognitionException {
		java.util.List i = null;


		CommonTree Identifier115=null;


		  i = new java.util.ArrayList();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:465:3: ( ^( ID_LIST ( Identifier )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:465:6: ^( ID_LIST ( Identifier )+ )
			{
			match(input,ID_LIST,FOLLOW_ID_LIST_in_idList3057); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:465:16: ( Identifier )+
			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/ReflexTreeWalker.g:465:17: Identifier
					{
					Identifier115=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_idList3060); 
					 i.add((Identifier115!=null?Identifier115.getText():null)); 
					}
					break;

				default :
					if ( cnt42 >= 1 ) break loop42;
					EarlyExitException eee = new EarlyExitException(42, input);
					throw eee;
				}
				cnt42++;
			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return i;
	}
	// $ANTLR end "idList"



	// $ANTLR start "exprList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:468:1: exprList returns [java.util.List e] : ^( EXP_LIST ( expression )+ ) ;
	public final java.util.List exprList() throws RecognitionException {
		java.util.List e = null;


		ReflexNode expression116 =null;


		   e = new java.util.ArrayList();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:472:3: ( ^( EXP_LIST ( expression )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:472:6: ^( EXP_LIST ( expression )+ )
			{
			match(input,EXP_LIST,FOLLOW_EXP_LIST_in_exprList3089); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:472:17: ( expression )+
			int cnt43=0;
			loop43:
			while (true) {
				int alt43=2;
				int LA43_0 = input.LA(1);
				if ( (LA43_0==Add||LA43_0==And||LA43_0==Bool||LA43_0==Divide||LA43_0==Equals||(LA43_0 >= GT && LA43_0 <= GTEquals)||LA43_0==In||LA43_0==Integer||(LA43_0 >= LOOKUP && LA43_0 <= LTEquals)||LA43_0==Long||(LA43_0 >= Modulus && LA43_0 <= NEquals)||(LA43_0 >= Null && LA43_0 <= Number)||LA43_0==Or||LA43_0==Pow||LA43_0==RANGELOOKUP||LA43_0==SPARSE||LA43_0==Subtract||LA43_0==TERNARY||LA43_0==UNARY_MIN) ) {
					alt43=1;
				}

				switch (alt43) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:472:18: expression
					{
					pushFollow(FOLLOW_expression_in_exprList3092);
					expression116=expression();
					state._fsp--;

					 e.add(expression116); 
					}
					break;

				default :
					if ( cnt43 >= 1 ) break loop43;
					EarlyExitException eee = new EarlyExitException(43, input);
					throw eee;
				}
				cnt43++;
			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return e;
	}
	// $ANTLR end "exprList"



	// $ANTLR start "expression"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:475:1: expression returns [ReflexNode node] : ( ^( TERNARY a= expression b= expression c= expression ) | ^( In a= expression b= expression ) | ^( '||' a= expression b= expression ) | ^( '&&' a= expression b= expression ) | ^( '==' a= expression b= expression ) | ^( '!=' a= expression b= expression ) | ^( '>=' a= expression b= expression ) | ^( '<=' a= expression b= expression ) | ^( '>' a= expression b= expression ) | ^( '<' a= expression b= expression ) | ^( '+' a= expression b= expression ) | ^( '-' a= expression b= expression ) | ^( '*' a= expression b= expression ) | ^( '/' a= expression b= expression ) | ^( '%' a= expression b= expression ) | ^( '^' a= expression b= expression ) | ^( UNARY_MIN a= expression ) | ^( NEGATE a= expression ) | Number | Integer | Long | Bool | Null | sparsematrix | lookup );
	public final ReflexNode expression() throws RecognitionException {
		ReflexNode node = null;


		CommonTree Number117=null;
		CommonTree Integer118=null;
		CommonTree Long119=null;
		CommonTree Bool120=null;
		ReflexNode a =null;
		ReflexNode b =null;
		ReflexNode c =null;
		int sparsematrix121 =0;
		ReflexNode lookup122 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:480:3: ( ^( TERNARY a= expression b= expression c= expression ) | ^( In a= expression b= expression ) | ^( '||' a= expression b= expression ) | ^( '&&' a= expression b= expression ) | ^( '==' a= expression b= expression ) | ^( '!=' a= expression b= expression ) | ^( '>=' a= expression b= expression ) | ^( '<=' a= expression b= expression ) | ^( '>' a= expression b= expression ) | ^( '<' a= expression b= expression ) | ^( '+' a= expression b= expression ) | ^( '-' a= expression b= expression ) | ^( '*' a= expression b= expression ) | ^( '/' a= expression b= expression ) | ^( '%' a= expression b= expression ) | ^( '^' a= expression b= expression ) | ^( UNARY_MIN a= expression ) | ^( NEGATE a= expression ) | Number | Integer | Long | Bool | Null | sparsematrix | lookup )
			int alt44=25;
			switch ( input.LA(1) ) {
			case TERNARY:
				{
				alt44=1;
				}
				break;
			case In:
				{
				alt44=2;
				}
				break;
			case Or:
				{
				alt44=3;
				}
				break;
			case And:
				{
				alt44=4;
				}
				break;
			case Equals:
				{
				alt44=5;
				}
				break;
			case NEquals:
				{
				alt44=6;
				}
				break;
			case GTEquals:
				{
				alt44=7;
				}
				break;
			case LTEquals:
				{
				alt44=8;
				}
				break;
			case GT:
				{
				alt44=9;
				}
				break;
			case LT:
				{
				alt44=10;
				}
				break;
			case Add:
				{
				alt44=11;
				}
				break;
			case Subtract:
				{
				alt44=12;
				}
				break;
			case Multiply:
				{
				alt44=13;
				}
				break;
			case Divide:
				{
				alt44=14;
				}
				break;
			case Modulus:
				{
				alt44=15;
				}
				break;
			case Pow:
				{
				alt44=16;
				}
				break;
			case UNARY_MIN:
				{
				alt44=17;
				}
				break;
			case NEGATE:
				{
				alt44=18;
				}
				break;
			case Number:
				{
				alt44=19;
				}
				break;
			case Integer:
				{
				alt44=20;
				}
				break;
			case Long:
				{
				alt44=21;
				}
				break;
			case Bool:
				{
				alt44=22;
				}
				break;
			case Null:
				{
				alt44=23;
				}
				break;
			case SPARSE:
				{
				alt44=24;
				}
				break;
			case LOOKUP:
			case RANGELOOKUP:
				{
				alt44=25;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 44, 0, input);
				throw nvae;
			}
			switch (alt44) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:480:6: ^( TERNARY a= expression b= expression c= expression )
					{
					match(input,TERNARY,FOLLOW_TERNARY_in_expression3121); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3125);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3129);
					b=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3133);
					c=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new TernaryNode(line, handler, currentScope, a, b, c); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:481:6: ^( In a= expression b= expression )
					{
					match(input,In,FOLLOW_In_in_expression3144); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3148);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3152);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new InNode(line, handler, currentScope, a, b); 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:482:6: ^( '||' a= expression b= expression )
					{
					match(input,Or,FOLLOW_Or_in_expression3163); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3167);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3171);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new OrNode(line, handler, currentScope, a, b); 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:483:6: ^( '&&' a= expression b= expression )
					{
					match(input,And,FOLLOW_And_in_expression3182); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3186);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3190);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AndNode(line, handler, currentScope, a, b); 
					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:484:6: ^( '==' a= expression b= expression )
					{
					match(input,Equals,FOLLOW_Equals_in_expression3201); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3205);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3209);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new EqualsNode(line, handler, currentScope, a, b); 
					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:485:6: ^( '!=' a= expression b= expression )
					{
					match(input,NEquals,FOLLOW_NEquals_in_expression3220); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3224);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3228);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new NotEqualsNode(line,handler, currentScope, a, b); 
					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:486:6: ^( '>=' a= expression b= expression )
					{
					match(input,GTEquals,FOLLOW_GTEquals_in_expression3239); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3243);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3247);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new GTEqualsNode(line, handler, currentScope, a, b); 
					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:487:6: ^( '<=' a= expression b= expression )
					{
					match(input,LTEquals,FOLLOW_LTEquals_in_expression3258); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3262);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3266);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new LTEqualsNode(line, handler, currentScope, a, b); 
					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:488:6: ^( '>' a= expression b= expression )
					{
					match(input,GT,FOLLOW_GT_in_expression3277); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3281);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3285);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new GTNode(line, handler, currentScope, a, b); 
					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:489:6: ^( '<' a= expression b= expression )
					{
					match(input,LT,FOLLOW_LT_in_expression3296); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3300);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3304);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new LTNode(line, handler, currentScope, a, b); 
					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:490:6: ^( '+' a= expression b= expression )
					{
					match(input,Add,FOLLOW_Add_in_expression3315); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3319);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3323);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new AddNode(line, handler,currentScope,  a, b); 
					}
					break;
				case 12 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:491:6: ^( '-' a= expression b= expression )
					{
					match(input,Subtract,FOLLOW_Subtract_in_expression3334); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3338);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3342);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new SubNode(line, handler, currentScope, a, b); 
					}
					break;
				case 13 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:492:6: ^( '*' a= expression b= expression )
					{
					match(input,Multiply,FOLLOW_Multiply_in_expression3353); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3357);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3361);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new MulNode(line, handler, currentScope, a, b); 
					}
					break;
				case 14 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:493:6: ^( '/' a= expression b= expression )
					{
					match(input,Divide,FOLLOW_Divide_in_expression3372); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3376);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3380);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new DivNode(line, handler, currentScope, a, b); 
					}
					break;
				case 15 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:494:6: ^( '%' a= expression b= expression )
					{
					match(input,Modulus,FOLLOW_Modulus_in_expression3391); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3395);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3399);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new ModNode(line, handler, currentScope, a, b); 
					}
					break;
				case 16 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:495:6: ^( '^' a= expression b= expression )
					{
					match(input,Pow,FOLLOW_Pow_in_expression3410); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3414);
					a=expression();
					state._fsp--;

					pushFollow(FOLLOW_expression_in_expression3418);
					b=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new PowNode(line, handler, currentScope, a, b); 
					}
					break;
				case 17 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:496:6: ^( UNARY_MIN a= expression )
					{
					match(input,UNARY_MIN,FOLLOW_UNARY_MIN_in_expression3429); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3433);
					a=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new UnaryMinusNode(line, handler, currentScope, a); 
					}
					break;
				case 18 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:497:6: ^( NEGATE a= expression )
					{
					match(input,NEGATE,FOLLOW_NEGATE_in_expression3444); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_expression3448);
					a=expression();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new NegateNode(line, handler, currentScope, a); 
					}
					break;
				case 19 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:498:6: Number
					{
					Number117=(CommonTree)match(input,Number,FOLLOW_Number_in_expression3458); 
					 node = new AtomNode(line, handler, currentScope, new BigDecimal((Number117!=null?Number117.getText():null), MathContext.DECIMAL128)); 
					}
					break;
				case 20 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:499:6: Integer
					{
					Integer118=(CommonTree)match(input,Integer,FOLLOW_Integer_in_expression3467); 
					 node = AtomNode.getIntegerAtom(line, handler, currentScope, (Integer118!=null?Integer118.getText():null)); 
					}
					break;
				case 21 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:500:6: Long
					{
					Long119=(CommonTree)match(input,Long,FOLLOW_Long_in_expression3476); 
					 node = new AtomNode(line, handler, currentScope, java.lang.Long.parseLong((Long119!=null?Long119.getText():null))); 
					}
					break;
				case 22 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:501:6: Bool
					{
					Bool120=(CommonTree)match(input,Bool,FOLLOW_Bool_in_expression3485); 
					 node = new AtomNode(line, handler, currentScope, Boolean.parseBoolean((Bool120!=null?Bool120.getText():null))); 
					}
					break;
				case 23 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:502:6: Null
					{
					match(input,Null,FOLLOW_Null_in_expression3494); 
					 node = new AtomNode(line, handler, currentScope); 
					}
					break;
				case 24 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:503:6: sparsematrix
					{
					pushFollow(FOLLOW_sparsematrix_in_expression3503);
					sparsematrix121=sparsematrix();
					state._fsp--;

					 node = new AtomNode(line, handler, currentScope, new MatrixDim(sparsematrix121)); 
					}
					break;
				case 25 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:504:6: lookup
					{
					pushFollow(FOLLOW_lookup_in_expression3512);
					lookup122=lookup();
					state._fsp--;

					 node = lookup122; 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "expression"



	// $ANTLR start "list"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:508:1: list returns [ReflexNode node] : ^( LIST ( exprList )? ) ;
	public final ReflexNode list() throws RecognitionException {
		ReflexNode node = null;


		java.util.List exprList123 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:513:3: ( ^( LIST ( exprList )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:513:5: ^( LIST ( exprList )? )
			{
			match(input,LIST,FOLLOW_LIST_in_list3538); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:513:12: ( exprList )?
				int alt45=2;
				int LA45_0 = input.LA(1);
				if ( (LA45_0==EXP_LIST) ) {
					alt45=1;
				}
				switch (alt45) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:513:12: exprList
						{
						pushFollow(FOLLOW_exprList_in_list3540);
						exprList123=exprList();
						state._fsp--;

						}
						break;

				}

				match(input, Token.UP, null); 
			}

			 node = new ListNode(line, handler, currentScope, exprList123); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "list"



	// $ANTLR start "mapdef"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:516:1: mapdef returns [ReflexNode node] : ^( MAPDEF ( keyValList )? ) ;
	public final ReflexNode mapdef() throws RecognitionException {
		ReflexNode node = null;


		java.util.List keyValList124 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:521:3: ( ^( MAPDEF ( keyValList )? ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:521:5: ^( MAPDEF ( keyValList )? )
			{
			match(input,MAPDEF,FOLLOW_MAPDEF_in_mapdef3567); 
			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:521:14: ( keyValList )?
				int alt46=2;
				int LA46_0 = input.LA(1);
				if ( (LA46_0==KEYVAL_LIST) ) {
					alt46=1;
				}
				switch (alt46) {
					case 1 :
						// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:521:14: keyValList
						{
						pushFollow(FOLLOW_keyValList_in_mapdef3569);
						keyValList124=keyValList();
						state._fsp--;

						}
						break;

				}

				match(input, Token.UP, null); 
			}

			 node = new MapNode(line, handler,currentScope,  keyValList124); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "mapdef"



	// $ANTLR start "jarUriList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:524:1: jarUriList returns [java.util.List jarUris] : ^( JARURI_LIST ( jarUri )+ ) ;
	public final java.util.List jarUriList() throws RecognitionException {
		java.util.List jarUris = null;


		String jarUri125 =null;


		   jarUris = new java.util.ArrayList();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:528:3: ( ^( JARURI_LIST ( jarUri )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:528:6: ^( JARURI_LIST ( jarUri )+ )
			{
			match(input,JARURI_LIST,FOLLOW_JARURI_LIST_in_jarUriList3597); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:528:20: ( jarUri )+
			int cnt47=0;
			loop47:
			while (true) {
				int alt47=2;
				int LA47_0 = input.LA(1);
				if ( (LA47_0==JARURI) ) {
					alt47=1;
				}

				switch (alt47) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:528:21: jarUri
					{
					pushFollow(FOLLOW_jarUri_in_jarUriList3600);
					jarUri125=jarUri();
					state._fsp--;

					 jarUris.add(jarUri125); 
					}
					break;

				default :
					if ( cnt47 >= 1 ) break loop47;
					EarlyExitException eee = new EarlyExitException(47, input);
					throw eee;
				}
				cnt47++;
			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return jarUris;
	}
	// $ANTLR end "jarUriList"



	// $ANTLR start "jarUri"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:531:1: jarUri returns [String uri] : ^( JARURI (j= String |j= QuotedString ) ) ;
	public final String jarUri() throws RecognitionException {
		String uri = null;


		CommonTree j=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:532:3: ( ^( JARURI (j= String |j= QuotedString ) ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:532:6: ^( JARURI (j= String |j= QuotedString ) )
			{
			match(input,JARURI,FOLLOW_JARURI_in_jarUri3624); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:532:15: (j= String |j= QuotedString )
			int alt48=2;
			int LA48_0 = input.LA(1);
			if ( (LA48_0==String) ) {
				alt48=1;
			}
			else if ( (LA48_0==QuotedString) ) {
				alt48=2;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 48, 0, input);
				throw nvae;
			}

			switch (alt48) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:532:16: j= String
					{
					j=(CommonTree)match(input,String,FOLLOW_String_in_jarUri3629); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:532:27: j= QuotedString
					{
					j=(CommonTree)match(input,QuotedString,FOLLOW_QuotedString_in_jarUri3635); 
					}
					break;

			}

			match(input, Token.UP, null); 

			 uri = (j!=null?j.getText():null); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return uri;
	}
	// $ANTLR end "jarUri"



	// $ANTLR start "keyValList"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:535:1: keyValList returns [java.util.List e] : ^( KEYVAL_LIST ( keyval )+ ) ;
	public final java.util.List keyValList() throws RecognitionException {
		java.util.List e = null;


		ReflexNode keyval126 =null;


		   e = new java.util.ArrayList();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:539:3: ( ^( KEYVAL_LIST ( keyval )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:539:6: ^( KEYVAL_LIST ( keyval )+ )
			{
			match(input,KEYVAL_LIST,FOLLOW_KEYVAL_LIST_in_keyValList3663); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:539:20: ( keyval )+
			int cnt49=0;
			loop49:
			while (true) {
				int alt49=2;
				int LA49_0 = input.LA(1);
				if ( (LA49_0==KEYVAL) ) {
					alt49=1;
				}

				switch (alt49) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:539:21: keyval
					{
					pushFollow(FOLLOW_keyval_in_keyValList3666);
					keyval126=keyval();
					state._fsp--;

					 e.add(keyval126); 
					}
					break;

				default :
					if ( cnt49 >= 1 ) break loop49;
					EarlyExitException eee = new EarlyExitException(49, input);
					throw eee;
				}
				cnt49++;
			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return e;
	}
	// $ANTLR end "keyValList"



	// $ANTLR start "keyval"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:542:1: keyval returns [ReflexNode node] : ^( KEYVAL k= expression v= expression ) ;
	public final ReflexNode keyval() throws RecognitionException {
		ReflexNode node = null;


		ReflexNode k =null;
		ReflexNode v =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:547:3: ( ^( KEYVAL k= expression v= expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:547:6: ^( KEYVAL k= expression v= expression )
			{
			match(input,KEYVAL,FOLLOW_KEYVAL_in_keyval3695); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_expression_in_keyval3699);
			k=expression();
			state._fsp--;

			pushFollow(FOLLOW_expression_in_keyval3703);
			v=expression();
			state._fsp--;

			match(input, Token.UP, null); 

			 node = new KeyValNode(line, handler, currentScope, k, v); 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "keyval"



	// $ANTLR start "lookup"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:550:1: lookup returns [ReflexNode node] : ( ^( LOOKUP functionCall (i= indexes )? ) | ^( LOOKUP PropertyPlaceholder ) | ^( RANGELOOKUP Identifier rangeindex ) | ^( RANGELOOKUP DottedIdentifier rangeindex ) | ^( LOOKUP list (i= indexes )? ) | ^( LOOKUP mapdef (i= indexes )? ) | ^( LOOKUP expression (i= indexes )? ) | ^( LOOKUP DottedIdentifier (x= indexes )? ) | ^( LOOKUP Identifier (x= indexes )? ) | ^( LOOKUP String (x= indexes )? ) | ^( LOOKUP QuotedString (x= indexes )? ) );
	public final ReflexNode lookup() throws RecognitionException {
		ReflexNode node = null;


		CommonTree PropertyPlaceholder128=null;
		CommonTree Identifier129=null;
		CommonTree DottedIdentifier131=null;
		CommonTree DottedIdentifier136=null;
		CommonTree Identifier137=null;
		CommonTree String138=null;
		CommonTree QuotedString139=null;
		java.util.List> i =null;
		java.util.List> x =null;
		ReflexNode functionCall127 =null;
		TreeRuleReturnScope rangeindex130 =null;
		TreeRuleReturnScope rangeindex132 =null;
		ReflexNode list133 =null;
		ReflexNode mapdef134 =null;
		ReflexNode expression135 =null;


		    CommonTree ahead = (CommonTree) input.LT(1);
		    int line = ahead.getToken().getLine();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:555:3: ( ^( LOOKUP functionCall (i= indexes )? ) | ^( LOOKUP PropertyPlaceholder ) | ^( RANGELOOKUP Identifier rangeindex ) | ^( RANGELOOKUP DottedIdentifier rangeindex ) | ^( LOOKUP list (i= indexes )? ) | ^( LOOKUP mapdef (i= indexes )? ) | ^( LOOKUP expression (i= indexes )? ) | ^( LOOKUP DottedIdentifier (x= indexes )? ) | ^( LOOKUP Identifier (x= indexes )? ) | ^( LOOKUP String (x= indexes )? ) | ^( LOOKUP QuotedString (x= indexes )? ) )
			int alt58=11;
			int LA58_0 = input.LA(1);
			if ( (LA58_0==LOOKUP) ) {
				int LA58_1 = input.LA(2);
				if ( (LA58_1==DOWN) ) {
					switch ( input.LA(3) ) {
					case PropertyPlaceholder:
						{
						alt58=2;
						}
						break;
					case DottedIdentifier:
						{
						alt58=8;
						}
						break;
					case Identifier:
						{
						alt58=9;
						}
						break;
					case String:
						{
						alt58=10;
						}
						break;
					case QuotedString:
						{
						alt58=11;
						}
						break;
					case FUNC_CALL:
					case KERNEL_CALL:
					case QUALIFIED_FUNC_CALL:
						{
						alt58=1;
						}
						break;
					case LIST:
						{
						alt58=5;
						}
						break;
					case MAPDEF:
						{
						alt58=6;
						}
						break;
					case Add:
					case And:
					case Bool:
					case Divide:
					case Equals:
					case GT:
					case GTEquals:
					case In:
					case Integer:
					case LOOKUP:
					case LT:
					case LTEquals:
					case Long:
					case Modulus:
					case Multiply:
					case NEGATE:
					case NEquals:
					case Null:
					case Number:
					case Or:
					case Pow:
					case RANGELOOKUP:
					case SPARSE:
					case Subtract:
					case TERNARY:
					case UNARY_MIN:
						{
						alt58=7;
						}
						break;
					default:
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 58, 3, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}

				else {
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 58, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}
			else if ( (LA58_0==RANGELOOKUP) ) {
				int LA58_2 = input.LA(2);
				if ( (LA58_2==DOWN) ) {
					int LA58_4 = input.LA(3);
					if ( (LA58_4==Identifier) ) {
						alt58=3;
					}
					else if ( (LA58_4==DottedIdentifier) ) {
						alt58=4;
					}

					else {
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 58, 4, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}

				else {
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 58, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 58, 0, input);
				throw nvae;
			}

			switch (alt58) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:555:6: ^( LOOKUP functionCall (i= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3730); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_functionCall_in_lookup3732);
					functionCall127=functionCall();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:555:29: (i= indexes )?
					int alt50=2;
					int LA50_0 = input.LA(1);
					if ( (LA50_0==INDEXES) ) {
						alt50=1;
					}
					switch (alt50) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:555:29: i= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3736);
							i=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = i != null ? new LookupNode(line, handler, currentScope, functionCall127, i) : functionCall127; 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:556:6: ^( LOOKUP PropertyPlaceholder )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3748); 
					match(input, Token.DOWN, null); 
					PropertyPlaceholder128=(CommonTree)match(input,PropertyPlaceholder,FOLLOW_PropertyPlaceholder_in_lookup3750); 
					match(input, Token.UP, null); 

					 node = new PropertyPlaceholderNode(line, handler, currentScope, (PropertyPlaceholder128!=null?PropertyPlaceholder128.getText():null)); 
					}
					break;
				case 3 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:557:6: ^( RANGELOOKUP Identifier rangeindex )
					{
					match(input,RANGELOOKUP,FOLLOW_RANGELOOKUP_in_lookup3762); 
					match(input, Token.DOWN, null); 
					Identifier129=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_lookup3764); 
					pushFollow(FOLLOW_rangeindex_in_lookup3766);
					rangeindex130=rangeindex();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new RangeLookupNode(line, handler, currentScope, new IdentifierNode(line, handler, currentScope, (Identifier129!=null?Identifier129.getText():null), namespaceStack.asPrefix()), (rangeindex130!=null?((ReflexTreeWalker.rangeindex_return)rangeindex130).ste:null), (rangeindex130!=null?((ReflexTreeWalker.rangeindex_return)rangeindex130).ed:null)); 
					}
					break;
				case 4 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:558:6: ^( RANGELOOKUP DottedIdentifier rangeindex )
					{
					match(input,RANGELOOKUP,FOLLOW_RANGELOOKUP_in_lookup3777); 
					match(input, Token.DOWN, null); 
					DottedIdentifier131=(CommonTree)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_lookup3779); 
					pushFollow(FOLLOW_rangeindex_in_lookup3781);
					rangeindex132=rangeindex();
					state._fsp--;

					match(input, Token.UP, null); 

					 node = new RangeLookupNode(line, handler, currentScope, new IdentifierNode(line, handler, currentScope, (DottedIdentifier131!=null?DottedIdentifier131.getText():null), namespaceStack.asPrefix()), (rangeindex132!=null?((ReflexTreeWalker.rangeindex_return)rangeindex132).ste:null), (rangeindex132!=null?((ReflexTreeWalker.rangeindex_return)rangeindex132).ed:null)); 
					}
					break;
				case 5 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:559:6: ^( LOOKUP list (i= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3792); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_list_in_lookup3794);
					list133=list();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:559:21: (i= indexes )?
					int alt51=2;
					int LA51_0 = input.LA(1);
					if ( (LA51_0==INDEXES) ) {
						alt51=1;
					}
					switch (alt51) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:559:21: i= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3798);
							i=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					  node = i != null ? new LookupNode(line, handler, currentScope, list133, i) : list133; 
					}
					break;
				case 6 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:560:6: ^( LOOKUP mapdef (i= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3810); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_mapdef_in_lookup3812);
					mapdef134=mapdef();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:560:23: (i= indexes )?
					int alt52=2;
					int LA52_0 = input.LA(1);
					if ( (LA52_0==INDEXES) ) {
						alt52=1;
					}
					switch (alt52) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:560:23: i= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3816);
							i=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = i != null ? new LookupNode(line, handler, currentScope, mapdef134, i) : mapdef134; 
					}
					break;
				case 7 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:561:6: ^( LOOKUP expression (i= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3828); 
					match(input, Token.DOWN, null); 
					pushFollow(FOLLOW_expression_in_lookup3830);
					expression135=expression();
					state._fsp--;

					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:561:27: (i= indexes )?
					int alt53=2;
					int LA53_0 = input.LA(1);
					if ( (LA53_0==INDEXES) ) {
						alt53=1;
					}
					switch (alt53) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:561:27: i= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3834);
							i=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 

					 node = i != null ? new LookupNode(line, handler, currentScope, expression135, i) : expression135; 
					}
					break;
				case 8 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:562:6: ^( LOOKUP DottedIdentifier (x= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3846); 
					match(input, Token.DOWN, null); 
					DottedIdentifier136=(CommonTree)match(input,DottedIdentifier,FOLLOW_DottedIdentifier_in_lookup3848); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:562:33: (x= indexes )?
					int alt54=2;
					int LA54_0 = input.LA(1);
					if ( (LA54_0==INDEXES) ) {
						alt54=1;
					}
					switch (alt54) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:562:33: x= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3852);
							x=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 


					        node = (x != null)
					          ? new LookupNode(line, handler, currentScope, new IdentifierNode(line, handler, currentScope, (DottedIdentifier136!=null?DottedIdentifier136.getText():null), namespaceStack.asPrefix()), x)
					          : new IdentifierNode(line, handler, currentScope, (DottedIdentifier136!=null?DottedIdentifier136.getText():null), namespaceStack.asPrefix());
					      
					}
					break;
				case 9 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:568:6: ^( LOOKUP Identifier (x= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3870); 
					match(input, Token.DOWN, null); 
					Identifier137=(CommonTree)match(input,Identifier,FOLLOW_Identifier_in_lookup3872); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:568:27: (x= indexes )?
					int alt55=2;
					int LA55_0 = input.LA(1);
					if ( (LA55_0==INDEXES) ) {
						alt55=1;
					}
					switch (alt55) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:568:27: x= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3876);
							x=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 


					        node = (x != null)
					          ? new LookupNode(line, handler, currentScope, new IdentifierNode(line, handler, currentScope, (Identifier137!=null?Identifier137.getText():null), namespaceStack.asPrefix()), x)
					          : new IdentifierNode(line, handler, currentScope, (Identifier137!=null?Identifier137.getText():null), namespaceStack.asPrefix());
					      
					}
					break;
				case 10 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:574:6: ^( LOOKUP String (x= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3894); 
					match(input, Token.DOWN, null); 
					String138=(CommonTree)match(input,String,FOLLOW_String_in_lookup3896); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:574:23: (x= indexes )?
					int alt56=2;
					int LA56_0 = input.LA(1);
					if ( (LA56_0==INDEXES) ) {
						alt56=1;
					}
					switch (alt56) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:574:23: x= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3900);
							x=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 


					      node = (x != null)
					        ? new LookupNode(line, handler, currentScope, new AtomNode(line, handler, currentScope, (String138!=null?String138.getText():null)), x)
					        : AtomNode.getStringAtom(line, handler,currentScope,  (String138!=null?String138.getText():null));
					    
					}
					break;
				case 11 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:580:5: ^( LOOKUP QuotedString (x= indexes )? )
					{
					match(input,LOOKUP,FOLLOW_LOOKUP_in_lookup3915); 
					match(input, Token.DOWN, null); 
					QuotedString139=(CommonTree)match(input,QuotedString,FOLLOW_QuotedString_in_lookup3917); 
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:580:28: (x= indexes )?
					int alt57=2;
					int LA57_0 = input.LA(1);
					if ( (LA57_0==INDEXES) ) {
						alt57=1;
					}
					switch (alt57) {
						case 1 :
							// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:580:28: x= indexes
							{
							pushFollow(FOLLOW_indexes_in_lookup3921);
							x=indexes();
							state._fsp--;

							}
							break;

					}

					match(input, Token.UP, null); 


					      node = (x != null)
					        ? new LookupNode(line, handler, currentScope, new QuotedStringNode(line, handler, currentScope, (QuotedString139!=null?QuotedString139.getText():null)), x)
					        : new QuotedStringNode(line, handler, currentScope, (QuotedString139!=null?QuotedString139.getText():null));
					    
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return node;
	}
	// $ANTLR end "lookup"


	public static class rangeindex_return extends TreeRuleReturnScope {
		public ReflexNode ste;
		public ReflexNode ed;
	};


	// $ANTLR start "rangeindex"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:588:1: rangeindex returns [ReflexNode ste, ReflexNode ed] : ^( RANGEINDEX lhs= expression rhs= expression ) ;
	public final ReflexTreeWalker.rangeindex_return rangeindex() throws RecognitionException {
		ReflexTreeWalker.rangeindex_return retval = new ReflexTreeWalker.rangeindex_return();
		retval.start = input.LT(1);

		ReflexNode lhs =null;
		ReflexNode rhs =null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:589:3: ( ^( RANGEINDEX lhs= expression rhs= expression ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:589:3: ^( RANGEINDEX lhs= expression rhs= expression )
			{
			match(input,RANGEINDEX,FOLLOW_RANGEINDEX_in_rangeindex3945); 
			match(input, Token.DOWN, null); 
			pushFollow(FOLLOW_expression_in_rangeindex3949);
			lhs=expression();
			state._fsp--;

			pushFollow(FOLLOW_expression_in_rangeindex3953);
			rhs=expression();
			state._fsp--;

			match(input, Token.UP, null); 

			 retval.ste = lhs; retval.ed = rhs; 
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "rangeindex"



	// $ANTLR start "indexes"
	// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:592:1: indexes returns [java.util.List> e] : ^( INDEXES ( exprList )+ ) ;
	public final java.util.List> indexes() throws RecognitionException {
		java.util.List> e = null;


		java.util.List exprList140 =null;


		  e = new ArrayList>();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:596:3: ( ^( INDEXES ( exprList )+ ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:596:6: ^( INDEXES ( exprList )+ )
			{
			match(input,INDEXES,FOLLOW_INDEXES_in_indexes3978); 
			match(input, Token.DOWN, null); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:596:16: ( exprList )+
			int cnt59=0;
			loop59:
			while (true) {
				int alt59=2;
				int LA59_0 = input.LA(1);
				if ( (LA59_0==EXP_LIST) ) {
					alt59=1;
				}

				switch (alt59) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/Reflex/src/main/antlr3/reflex/ReflexTreeWalker.g:596:17: exprList
					{
					pushFollow(FOLLOW_exprList_in_indexes3981);
					exprList140=exprList();
					state._fsp--;

					 e.add(exprList140); 
					}
					break;

				default :
					if ( cnt59 >= 1 ) break loop59;
					EarlyExitException eee = new EarlyExitException(59, input);
					throw eee;
				}
				cnt59++;
			}

			match(input, Token.UP, null); 

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return e;
	}
	// $ANTLR end "indexes"

	// Delegated rules


	protected DFA36 dfa36 = new DFA36(this);
	static final String DFA36_eotS =
		"\131\uffff";
	static final String DFA36_eofS =
		"\131\uffff";
	static final String DFA36_minS =
		"\1\110\1\2\2\uffff\1\6\121\uffff\1\140\2\uffff";
	static final String DFA36_maxS =
		"\1\u00a7\1\2\2\uffff\1\u00db\121\uffff\1\u00aa\2\uffff";
	static final String DFA36_acceptS =
		"\2\uffff\1\124\1\125\1\uffff\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\uffff\1\122\1\123";
	static final String DFA36_specialS =
		"\131\uffff}>";
	static final String[] DFA36_transitionS = {
			"\1\1\44\uffff\1\2\71\uffff\1\3",
			"\1\4",
			"",
			"",
			"\1\21\1\uffff\1\20\1\54\1\uffff\1\27\1\uffff\1\103\1\104\1\uffff\1\105"+
			"\1\37\1\40\12\uffff\1\120\1\12\1\uffff\1\114\1\uffff\1\111\1\60\1\36"+
			"\5\uffff\1\53\2\uffff\1\42\1\41\2\uffff\1\126\1\55\1\71\5\uffff\1\23"+
			"\10\uffff\1\44\6\uffff\1\52\1\16\1\17\1\uffff\1\63\1\76\2\uffff\1\122"+
			"\1\123\1\70\1\11\1\10\1\13\11\uffff\1\5\6\uffff\1\50\1\51\2\uffff\1\72"+
			"\1\74\4\uffff\1\34\4\uffff\1\117\3\uffff\1\75\3\uffff\1\15\1\uffff\1"+
			"\113\1\62\1\64\1\66\1\47\4\uffff\1\121\21\uffff\1\6\1\uffff\1\56\2\uffff"+
			"\1\14\1\7\3\uffff\1\67\7\uffff\1\31\1\32\1\115\1\46\1\102\1\65\1\uffff"+
			"\1\116\5\uffff\1\110\1\uffff\1\30\1\112\1\35\1\uffff\1\125\1\25\1\24"+
			"\3\uffff\1\57\1\106\2\uffff\1\22\1\124\1\uffff\1\43\1\61\1\uffff\1\33"+
			"\1\uffff\1\26\1\uffff\1\73\1\uffff\1\100\1\77\1\uffff\1\101\1\45\1\107",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"\1\127\22\uffff\1\130\66\uffff\1\130",
			"",
			""
	};

	static final short[] DFA36_eot = DFA.unpackEncodedString(DFA36_eotS);
	static final short[] DFA36_eof = DFA.unpackEncodedString(DFA36_eofS);
	static final char[] DFA36_min = DFA.unpackEncodedStringToUnsignedChars(DFA36_minS);
	static final char[] DFA36_max = DFA.unpackEncodedStringToUnsignedChars(DFA36_maxS);
	static final short[] DFA36_accept = DFA.unpackEncodedString(DFA36_acceptS);
	static final short[] DFA36_special = DFA.unpackEncodedString(DFA36_specialS);
	static final short[][] DFA36_transition;

	static {
		int numStates = DFA36_transitionS.length;
		DFA36_transition = new short[numStates][];
		for (int i=0; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy