Package tool.model.grammar

Source Code of tool.model.grammar.ForteAST$booleanLiteral_return

// $ANTLR 3.4 /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g 2012-05-01 14:40:29

package tool.model.grammar;
import tool.model.ToolPlan;
import tool.model.ToolForwardDeclaration;
import tool.model.ToolClass;
import tool.model.ToolConstant;
import tool.model.ToolProperty;
import tool.model.ToolServiceObject;
import org.eclipse.core.resources.IProject;
import java.util.Map;


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

@SuppressWarnings({"all", "warnings", "unchecked"})
public class ForteAST extends TreeParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ALLOW", "AND", "ARGUMENT", "ARGUMENT_LIST", "ARGUMENT_LIST_EVENT", "ARRAY_CSTYLE", "ARRAY_DECLARATOR_LIST", "ARRAY_ELEMENT_ACCESS", "ARRAY_INDEX", "ARRAY_TYPE", "ATTRIBUTE", "ATTRIBUTE_DECLARATION", "BEGIN", "BIT_AND", "BIT_OR", "BIT_XOR", "BLOCK", "BLOCK_SCOPE", "BY", "CASE", "CAST_EXPR", "CHANGED", "CLASS", "CLASSLINEAGE", "CLASS_CONSTRUCTOR_CALL", "CLASS_DECLARATION", "COLON", "COMMA", "COMMENT", "COMPLETION", "CONSTANT", "CONTINUE", "COPY", "CURSOR", "C_ARRAY", "C_ARRAY_RANGE", "DEFAULT", "DIGIT", "DISTRIBUTED", "DIV", "DO", "DOT", "DOTDOT", "ELSE", "ELSEIF", "END", "ENUM", "EQ", "EVENT", "EVENT_CASE", "EVENT_DECLARATION", "EVENT_HANDLER_DECLARATION", "EVENT_HANDLER_IMPLEMENTATION", "EVENT_LOOP", "EXCEPTION", "EXIT", "EXPR", "EXTENDED", "Escape", "EscapeSequence", "FALSE", "FLOATLITERAL", "FOR", "FORMAL_PARAM_LIST", "FORWARD", "FORWARD_CLASS", "FORWARD_CURSOR", "FORWARD_INTERFACE", "FORWARD_MAPPED_CLASS", "FOR_COUNT", "FOR_EACH", "FOR_SQL", "FROM", "FUNCTION_METHOD_DECL", "GENERATED", "GET_EXPRESSION", "GT", "GTEQ", "HANDLER", "HAS", "HEXLITERAL", "HexDigit", "HexPrefix", "IDENTIFIER", "IF", "IMPLEMENTS", "IN", "INCLUDE", "INCLUDES", "INHERITS", "INPUT", "INTERFACE", "INTERFACE_DECLARATION", "INTLITERAL", "IS", "IntegerNumber", "LABEL", "LETTER", "LINE_COMMENT", "LOCAL_DECLARATION", "LOOP", "LPAREN", "LT", "LTEQ", "MAPPED", "METHOD", "METHOD_CALL", "METHOD_COMPLETION", "METHOD_DECLARATION", "METHOD_IMPLEMENTATION", "MINUS", "MOD", "MONITORED", "MULT", "NEGATION", "NEW", "NIL", "NOT", "NOT_EQUAL", "NO_PARAM_NAME", "OF", "ON_SESSION", "OR", "OUTPUT", "OVERRIDE", "PARAMETER", "PARENTESIZED_EXPR", "PLAN_TYPE", "PLUS", "POINTER_TYPE", "POST", "POSTREGISTER", "PREREGISTER", "PRIVATE", "PROJECT", "PROJECT_TYPE", "PROJ_PROP", "PROPERTY", "PROP_APPLICATION", "PROP_CL", "PROP_INTERNAL", "PROP_IS_LIBRARY", "PROP_LIBRARY_NAME", "PROP_MULTI_THREAD", "PROP_PROJ_TYPE", "PROP_RESTRICTED", "PROP_START_METHOD", "PUBLIC", "QUALIFIED_NAME", "QUALIFIED_TYPE_IDENT", "Quote", "RAISE", "REGISTER", "RETURN", "RPAREN", "SELF", "SELF_CONSTRUCTOR_CALL", "SEMI", "SERVICE", "SET_EXPRESSION", "SHARED", "SO_DIALOG", "SO_EXT_MGR", "SO_FAILOVER", "SO_LOADBALANCE", "SO_PASSWORD", "SO_PATH", "SO_RESOURCE", "SO_USERNAME", "SO_VIS", "SQL", "SQL_CURSOR", "SQL_CURSOR_FETCH", "SQL_CURSOR_NEXT", "SQL_DELETE", "SQL_EXECUTE_IMMEDIATE", "SQL_EXECUTE_PROCEDURE", "SQL_GROUP_BY", "SQL_INSERT", "SQL_ORDER_BY", "SQL_SELECT", "SQL_TABLE_NAMES", "SQL_UPDATE", "SQL_VARIABLE", "START", "START_TASK", "STRINGLITERAL", "STRUCT", "SUPER", "SUPER_CONSTRUCTOR_CALL", "SUPPLIER_PLANS", "TASK", "THEN", "TO", "TRANSACTION", "TRANSACTIONAL", "TRUE", "TYPE", "TYPEDEF", "UNARY_MINUS", "UNARY_PLUS", "UNDERSCORE", "UNION", "UUID", "VIRTUAL", "VIRTUAL_ATTRIBUTE", "VOID_METHOD_DECL", "WHEN", "WHEN_CASE", "WHEN_EVENT", "WHEN_EXCEPTION", "WHERE", "WHILE", "WIDGETIDENTFIER", "WINDOWLITERAL", "WINDOWTERMINATOR", "WINDOW_ATTRIBUTE_DECLARATION", "WS", "'\"$toocomplex\"'", "'\"'", "'#'", "'$toocomplex'", "'['", "']'", "'privateinternal'", "'projecttype'", "'publicinternal'", "'restricted'", "CURSOR_DECLARATION", "SQL_DO", "XOR", "'ignore'"
    };

    public static final int EOF=-1;
    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 ALLOW=4;
    public static final int AND=5;
    public static final int ARGUMENT=6;
    public static final int ARGUMENT_LIST=7;
    public static final int ARGUMENT_LIST_EVENT=8;
    public static final int ARRAY_CSTYLE=9;
    public static final int ARRAY_DECLARATOR_LIST=10;
    public static final int ARRAY_ELEMENT_ACCESS=11;
    public static final int ARRAY_INDEX=12;
    public static final int ARRAY_TYPE=13;
    public static final int ATTRIBUTE=14;
    public static final int ATTRIBUTE_DECLARATION=15;
    public static final int BEGIN=16;
    public static final int BIT_AND=17;
    public static final int BIT_OR=18;
    public static final int BIT_XOR=19;
    public static final int BLOCK=20;
    public static final int BLOCK_SCOPE=21;
    public static final int BY=22;
    public static final int CASE=23;
    public static final int CAST_EXPR=24;
    public static final int CHANGED=25;
    public static final int CLASS=26;
    public static final int CLASSLINEAGE=27;
    public static final int CLASS_CONSTRUCTOR_CALL=28;
    public static final int CLASS_DECLARATION=29;
    public static final int COLON=30;
    public static final int COMMA=31;
    public static final int COMMENT=32;
    public static final int COMPLETION=33;
    public static final int CONSTANT=34;
    public static final int CONTINUE=35;
    public static final int COPY=36;
    public static final int CURSOR=37;
    public static final int C_ARRAY=38;
    public static final int C_ARRAY_RANGE=39;
    public static final int DEFAULT=40;
    public static final int DIGIT=41;
    public static final int DISTRIBUTED=42;
    public static final int DIV=43;
    public static final int DO=44;
    public static final int DOT=45;
    public static final int DOTDOT=46;
    public static final int ELSE=47;
    public static final int ELSEIF=48;
    public static final int END=49;
    public static final int ENUM=50;
    public static final int EQ=51;
    public static final int EVENT=52;
    public static final int EVENT_CASE=53;
    public static final int EVENT_DECLARATION=54;
    public static final int EVENT_HANDLER_DECLARATION=55;
    public static final int EVENT_HANDLER_IMPLEMENTATION=56;
    public static final int EVENT_LOOP=57;
    public static final int EXCEPTION=58;
    public static final int EXIT=59;
    public static final int EXPR=60;
    public static final int EXTENDED=61;
    public static final int Escape=62;
    public static final int EscapeSequence=63;
    public static final int FALSE=64;
    public static final int FLOATLITERAL=65;
    public static final int FOR=66;
    public static final int FORMAL_PARAM_LIST=67;
    public static final int FORWARD=68;
    public static final int FORWARD_CLASS=69;
    public static final int FORWARD_CURSOR=70;
    public static final int FORWARD_INTERFACE=71;
    public static final int FORWARD_MAPPED_CLASS=72;
    public static final int FOR_COUNT=73;
    public static final int FOR_EACH=74;
    public static final int FOR_SQL=75;
    public static final int FROM=76;
    public static final int FUNCTION_METHOD_DECL=77;
    public static final int GENERATED=78;
    public static final int GET_EXPRESSION=79;
    public static final int GT=80;
    public static final int GTEQ=81;
    public static final int HANDLER=82;
    public static final int HAS=83;
    public static final int HEXLITERAL=84;
    public static final int HexDigit=85;
    public static final int HexPrefix=86;
    public static final int IDENTIFIER=87;
    public static final int IF=88;
    public static final int IMPLEMENTS=89;
    public static final int IN=90;
    public static final int INCLUDE=91;
    public static final int INCLUDES=92;
    public static final int INHERITS=93;
    public static final int INPUT=94;
    public static final int INTERFACE=95;
    public static final int INTERFACE_DECLARATION=96;
    public static final int INTLITERAL=97;
    public static final int IS=98;
    public static final int IntegerNumber=99;
    public static final int LABEL=100;
    public static final int LETTER=101;
    public static final int LINE_COMMENT=102;
    public static final int LOCAL_DECLARATION=103;
    public static final int LOOP=104;
    public static final int LPAREN=105;
    public static final int LT=106;
    public static final int LTEQ=107;
    public static final int MAPPED=108;
    public static final int METHOD=109;
    public static final int METHOD_CALL=110;
    public static final int METHOD_COMPLETION=111;
    public static final int METHOD_DECLARATION=112;
    public static final int METHOD_IMPLEMENTATION=113;
    public static final int MINUS=114;
    public static final int MOD=115;
    public static final int MONITORED=116;
    public static final int MULT=117;
    public static final int NEGATION=118;
    public static final int NEW=119;
    public static final int NIL=120;
    public static final int NOT=121;
    public static final int NOT_EQUAL=122;
    public static final int NO_PARAM_NAME=123;
    public static final int OF=124;
    public static final int ON_SESSION=125;
    public static final int OR=126;
    public static final int OUTPUT=127;
    public static final int OVERRIDE=128;
    public static final int PARAMETER=129;
    public static final int PARENTESIZED_EXPR=130;
    public static final int PLAN_TYPE=131;
    public static final int PLUS=132;
    public static final int POINTER_TYPE=133;
    public static final int POST=134;
    public static final int POSTREGISTER=135;
    public static final int PREREGISTER=136;
    public static final int PRIVATE=137;
    public static final int PROJECT=138;
    public static final int PROJECT_TYPE=139;
    public static final int PROJ_PROP=140;
    public static final int PROPERTY=141;
    public static final int PROP_APPLICATION=142;
    public static final int PROP_CL=143;
    public static final int PROP_INTERNAL=144;
    public static final int PROP_IS_LIBRARY=145;
    public static final int PROP_LIBRARY_NAME=146;
    public static final int PROP_MULTI_THREAD=147;
    public static final int PROP_PROJ_TYPE=148;
    public static final int PROP_RESTRICTED=149;
    public static final int PROP_START_METHOD=150;
    public static final int PUBLIC=151;
    public static final int QUALIFIED_NAME=152;
    public static final int QUALIFIED_TYPE_IDENT=153;
    public static final int Quote=154;
    public static final int RAISE=155;
    public static final int REGISTER=156;
    public static final int RETURN=157;
    public static final int RPAREN=158;
    public static final int SELF=159;
    public static final int SELF_CONSTRUCTOR_CALL=160;
    public static final int SEMI=161;
    public static final int SERVICE=162;
    public static final int SET_EXPRESSION=163;
    public static final int SHARED=164;
    public static final int SO_DIALOG=165;
    public static final int SO_EXT_MGR=166;
    public static final int SO_FAILOVER=167;
    public static final int SO_LOADBALANCE=168;
    public static final int SO_PASSWORD=169;
    public static final int SO_PATH=170;
    public static final int SO_RESOURCE=171;
    public static final int SO_USERNAME=172;
    public static final int SO_VIS=173;
    public static final int SQL=174;
    public static final int SQL_CURSOR=175;
    public static final int SQL_CURSOR_FETCH=176;
    public static final int SQL_CURSOR_NEXT=177;
    public static final int SQL_DELETE=178;
    public static final int SQL_EXECUTE_IMMEDIATE=179;
    public static final int SQL_EXECUTE_PROCEDURE=180;
    public static final int SQL_GROUP_BY=181;
    public static final int SQL_INSERT=182;
    public static final int SQL_ORDER_BY=183;
    public static final int SQL_SELECT=184;
    public static final int SQL_TABLE_NAMES=185;
    public static final int SQL_UPDATE=186;
    public static final int SQL_VARIABLE=187;
    public static final int START=188;
    public static final int START_TASK=189;
    public static final int STRINGLITERAL=190;
    public static final int STRUCT=191;
    public static final int SUPER=192;
    public static final int SUPER_CONSTRUCTOR_CALL=193;
    public static final int SUPPLIER_PLANS=194;
    public static final int TASK=195;
    public static final int THEN=196;
    public static final int TO=197;
    public static final int TRANSACTION=198;
    public static final int TRANSACTIONAL=199;
    public static final int TRUE=200;
    public static final int TYPE=201;
    public static final int TYPEDEF=202;
    public static final int UNARY_MINUS=203;
    public static final int UNARY_PLUS=204;
    public static final int UNDERSCORE=205;
    public static final int UNION=206;
    public static final int UUID=207;
    public static final int VIRTUAL=208;
    public static final int VIRTUAL_ATTRIBUTE=209;
    public static final int VOID_METHOD_DECL=210;
    public static final int WHEN=211;
    public static final int WHEN_CASE=212;
    public static final int WHEN_EVENT=213;
    public static final int WHEN_EXCEPTION=214;
    public static final int WHERE=215;
    public static final int WHILE=216;
    public static final int WIDGETIDENTFIER=217;
    public static final int WINDOWLITERAL=218;
    public static final int WINDOWTERMINATOR=219;
    public static final int WINDOW_ATTRIBUTE_DECLARATION=220;
    public static final int WS=221;
    public static final int T__235=235;
    public static final int CURSOR_DECLARATION=232;
    public static final int SQL_DO=233;
    public static final int XOR=234;

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

    // delegators


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

    public String[] getTokenNames() { return ForteAST.tokenNames; }
    public String getGrammarFileName() { return "/Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g"; }


      private IProject eclipseProject;
     
      public ForteAST(IProject eclipseProject, TreeNodeStream input){
        super(input);
        this.eclipseProject = eclipseProject;
      }
     
      protected void addPlanToProject(ToolPlan plan){
        if (this.eclipseProject != null){
          Map<String, ToolPlan> cache = ToolPlan.getPlanCache(this.eclipseProject);
          cache.put(plan.getToolName().toUpperCase(), plan);
          System.out.println("No of plans cached: " + cache.size());
        }
      }
     


    protected static class project_scope {
        ToolPlan currentPlan;
    }
    protected Stack project_stack = new Stack();



    // $ANTLR start "project"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:40:1: project returns [ToolPlan newPlan] : ^( PROJECT projName= IDENTIFIER planType ( supplierPlans )? ( forward )* ( constantDeclaration[true] )* ( cDataTypeDeclatation[$projName.text] )* ( objectTypeDeclaration[$projName.text] )* ( serviceDeclaration[$projName.text] )* ( cursorDeclaration[$projName.text] )* ( methodImplementation )* ( project_property )* ( include )* ) ;
    public final ToolPlan project() throws RecognitionException {
        project_stack.push(new project_scope());
        ToolPlan newPlan = null;


        CommonTree projName=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:51:3: ( ^( PROJECT projName= IDENTIFIER planType ( supplierPlans )? ( forward )* ( constantDeclaration[true] )* ( cDataTypeDeclatation[$projName.text] )* ( objectTypeDeclaration[$projName.text] )* ( serviceDeclaration[$projName.text] )* ( cursorDeclaration[$projName.text] )* ( methodImplementation )* ( project_property )* ( include )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:51:5: ^( PROJECT projName= IDENTIFIER planType ( supplierPlans )? ( forward )* ( constantDeclaration[true] )* ( cDataTypeDeclatation[$projName.text] )* ( objectTypeDeclaration[$projName.text] )* ( serviceDeclaration[$projName.text] )* ( cursorDeclaration[$projName.text] )* ( methodImplementation )* ( project_property )* ( include )* )
            {
            match(input,PROJECT,FOLLOW_PROJECT_in_project78); if (state.failed) return newPlan;

            match(input, Token.DOWN, null); if (state.failed) return newPlan;
            projName=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_project82); if (state.failed) return newPlan;

            if ( state.backtracking==0 ) {
                ((project_scope)project_stack.peek()).currentPlan = new ToolPlan((projName!=null?projName.getText():null));
                addPlanToProject(((project_scope)project_stack.peek()).currentPlan);
                }

            pushFollow(FOLLOW_planType_in_project93);
            planType();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:57:4: ( supplierPlans )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==SUPPLIER_PLANS) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:57:4: supplierPlans
                    {
                    pushFollow(FOLLOW_supplierPlans_in_project99);
                    supplierPlans();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:58:4: ( forward )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0 >= FORWARD_CLASS && LA2_0 <= FORWARD_MAPPED_CLASS)) ) {
                    alt2=1;
                }


                switch (alt2) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:58:4: forward
                  {
                  pushFollow(FOLLOW_forward_in_project106);
                  forward();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:59:4: ( constantDeclaration[true] )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==CONSTANT) ) {
                    alt3=1;
                }


                switch (alt3) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:59:4: constantDeclaration[true]
                  {
                  pushFollow(FOLLOW_constantDeclaration_in_project112);
                  constantDeclaration(true);

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:60:4: ( cDataTypeDeclatation[$projName.text] )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==ENUM||LA4_0==STRUCT||LA4_0==TYPEDEF) ) {
                    alt4=1;
                }


                switch (alt4) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:60:4: cDataTypeDeclatation[$projName.text]
                  {
                  pushFollow(FOLLOW_cDataTypeDeclatation_in_project120);
                  cDataTypeDeclatation((projName!=null?projName.getText():null));

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:61:4: ( objectTypeDeclaration[$projName.text] )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==CLASS_DECLARATION||LA5_0==INTERFACE_DECLARATION) ) {
                    alt5=1;
                }


                switch (alt5) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:61:4: objectTypeDeclaration[$projName.text]
                  {
                  pushFollow(FOLLOW_objectTypeDeclaration_in_project127);
                  objectTypeDeclaration((projName!=null?projName.getText():null));

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:62:4: ( serviceDeclaration[$projName.text] )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==SERVICE) ) {
                    alt6=1;
                }


                switch (alt6) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:62:4: serviceDeclaration[$projName.text]
                  {
                  pushFollow(FOLLOW_serviceDeclaration_in_project134);
                  serviceDeclaration((projName!=null?projName.getText():null));

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:63:4: ( cursorDeclaration[$projName.text] )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==CURSOR_DECLARATION) ) {
                    alt7=1;
                }


                switch (alt7) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:63:4: cursorDeclaration[$projName.text]
                  {
                  pushFollow(FOLLOW_cursorDeclaration_in_project141);
                  cursorDeclaration((projName!=null?projName.getText():null));

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:64:4: ( methodImplementation )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==METHOD_IMPLEMENTATION) ) {
                    alt8=1;
                }


                switch (alt8) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:64:4: methodImplementation
                  {
                  pushFollow(FOLLOW_methodImplementation_in_project148);
                  methodImplementation();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:65:5: ( project_property )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==EXTENDED||(LA9_0 >= PROP_APPLICATION && LA9_0 <= PROP_START_METHOD)) ) {
                    alt9=1;
                }


                switch (alt9) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:65:5: project_property
                  {
                  pushFollow(FOLLOW_project_property_in_project155);
                  project_property();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:67:4: ( include )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==INCLUDE) ) {
                    alt10=1;
                }


                switch (alt10) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:67:4: include
                  {
                  pushFollow(FOLLOW_include_in_project162);
                  include();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return newPlan;


            }

            if ( state.backtracking==0 ) {
                newPlan = ((project_scope)project_stack.peek()).currentPlan;
                System.out.println("New ToolPlan: " + ((project_scope)project_stack.peek()).currentPlan.getToolName());
                System.out.println("\tSupplierPlans: " + ((project_scope)project_stack.peek()).currentPlan.getSupplierPlansAsList().size());
                System.out.println("\tConstants: " + ((project_scope)project_stack.peek()).currentPlan.getProjectConstants().length);
                System.out.println("\tForward declarations: " + ((project_scope)project_stack.peek()).currentPlan.getForwardDeclarations().size());
              }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
          // do for sure before leaving
            project_stack.pop();
        }
        return newPlan;
    }
    // $ANTLR end "project"



    // $ANTLR start "objectTypeDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:71:1: objectTypeDeclaration[String projectName] : ( classDeclaration[$projectName] | interfaceDeclaration[$projectName] );
    public final void objectTypeDeclaration(String projectName) throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:72:2: ( classDeclaration[$projectName] | interfaceDeclaration[$projectName] )
            int alt11=2;
            int LA11_0 = input.LA(1);

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

                throw nvae;

            }
            switch (alt11) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:72:4: classDeclaration[$projectName]
                    {
                    pushFollow(FOLLOW_classDeclaration_in_objectTypeDeclaration181);
                    classDeclaration(projectName);

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:73:4: interfaceDeclaration[$projectName]
                    {
                    pushFollow(FOLLOW_interfaceDeclaration_in_objectTypeDeclaration187);
                    interfaceDeclaration(projectName);

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "projectConstants"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:76:1: projectConstants : ( constantDeclaration[true] )* ;
    public final void projectConstants() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:77:2: ( ( constantDeclaration[true] )* )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:77:4: ( constantDeclaration[true] )*
            {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:77:4: ( constantDeclaration[true] )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==CONSTANT) ) {
                    alt12=1;
                }


                switch (alt12) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:77:4: constantDeclaration[true]
                  {
                  pushFollow(FOLLOW_constantDeclaration_in_projectConstants200);
                  constantDeclaration(true);

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "project_property"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:81:1: project_property : ( isLibrary | project_type | compatibility_level | restricted | multithreaded | internal | library_name | starting_method | extended_property | application );
    public final void project_property() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:82:3: ( isLibrary | project_type | compatibility_level | restricted | multithreaded | internal | library_name | starting_method | extended_property | application )
            int alt13=10;
            switch ( input.LA(1) ) {
            case PROP_IS_LIBRARY:
                {
                alt13=1;
                }
                break;
            case PROP_PROJ_TYPE:
                {
                alt13=2;
                }
                break;
            case PROP_CL:
                {
                alt13=3;
                }
                break;
            case PROP_RESTRICTED:
                {
                alt13=4;
                }
                break;
            case PROP_MULTI_THREAD:
                {
                alt13=5;
                }
                break;
            case PROP_INTERNAL:
                {
                alt13=6;
                }
                break;
            case PROP_LIBRARY_NAME:
                {
                alt13=7;
                }
                break;
            case PROP_START_METHOD:
                {
                alt13=8;
                }
                break;
            case EXTENDED:
                {
                alt13=9;
                }
                break;
            case PROP_APPLICATION:
                {
                alt13=10;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;

            }

            switch (alt13) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:82:5: isLibrary
                    {
                    pushFollow(FOLLOW_isLibrary_in_project_property217);
                    isLibrary();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:83:5: project_type
                    {
                    pushFollow(FOLLOW_project_type_in_project_property223);
                    project_type();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:84:5: compatibility_level
                    {
                    pushFollow(FOLLOW_compatibility_level_in_project_property229);
                    compatibility_level();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:85:5: restricted
                    {
                    pushFollow(FOLLOW_restricted_in_project_property235);
                    restricted();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:86:5: multithreaded
                    {
                    pushFollow(FOLLOW_multithreaded_in_project_property241);
                    multithreaded();

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:87:5: internal
                    {
                    pushFollow(FOLLOW_internal_in_project_property247);
                    internal();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:88:5: library_name
                    {
                    pushFollow(FOLLOW_library_name_in_project_property253);
                    library_name();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:89:5: starting_method
                    {
                    pushFollow(FOLLOW_starting_method_in_project_property259);
                    starting_method();

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

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:90:5: extended_property
                    {
                    pushFollow(FOLLOW_extended_property_in_project_property265);
                    extended_property();

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

                    }
                    break;
                case 10 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:91:5: application
                    {
                    pushFollow(FOLLOW_application_in_project_property271);
                    application();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "planType"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:95:2: planType : ^( PLAN_TYPE IDENTIFIER ) ;
    public final void planType() throws RecognitionException {
        CommonTree IDENTIFIER1=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:96:3: ( ^( PLAN_TYPE IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:96:5: ^( PLAN_TYPE IDENTIFIER )
            {
            match(input,PLAN_TYPE,FOLLOW_PLAN_TYPE_in_planType289); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER1=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_planType291); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
               ((project_scope)project_stack.peek()).currentPlan.setProjectType((IDENTIFIER1!=null?IDENTIFIER1.getText():null));
               }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "supplierPlans"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:102:2: supplierPlans : ^( SUPPLIER_PLANS ( supplierPlan )+ ) ;
    public final void supplierPlans() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:103:3: ( ^( SUPPLIER_PLANS ( supplierPlan )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:103:5: ^( SUPPLIER_PLANS ( supplierPlan )+ )
            {
            match(input,SUPPLIER_PLANS,FOLLOW_SUPPLIER_PLANS_in_supplierPlans313); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:103:22: ( supplierPlan )+
            int cnt14=0;
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==IDENTIFIER) ) {
                    alt14=1;
                }


                switch (alt14) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:103:22: supplierPlan
                  {
                  pushFollow(FOLLOW_supplierPlan_in_supplierPlans315);
                  supplierPlan();

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

                  }
                  break;

              default :
                  if ( cnt14 >= 1 ) break loop14;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(14, input);
                        throw eee;
                }
                cnt14++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "supplierPlan"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:106:1: supplierPlan : IDENTIFIER ;
    public final void supplierPlan() throws RecognitionException {
        CommonTree IDENTIFIER2=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:107:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:107:5: IDENTIFIER
            {
            IDENTIFIER2=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_supplierPlan332); if (state.failed) return ;

            if ( state.backtracking==0 ) {((project_scope)project_stack.peek()).currentPlan.addSupplierPlan((IDENTIFIER2!=null?IDENTIFIER2.getText():null));}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "isLibrary"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:111:2: isLibrary : ^( PROP_IS_LIBRARY booleanLiteral ) ;
    public final void isLibrary() throws RecognitionException {
        ForteAST.booleanLiteral_return booleanLiteral3 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:112:3: ( ^( PROP_IS_LIBRARY booleanLiteral ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:112:5: ^( PROP_IS_LIBRARY booleanLiteral )
            {
            match(input,PROP_IS_LIBRARY,FOLLOW_PROP_IS_LIBRARY_in_isLibrary351); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_booleanLiteral_in_isLibrary353);
            booleanLiteral3=booleanLiteral();

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

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                 ((project_scope)project_stack.peek()).currentPlan.setLibrary(Boolean.parseBoolean((booleanLiteral3!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(booleanLiteral3.start),input.getTreeAdaptor().getTokenStopIndex(booleanLiteral3.start))):null)));
                 }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "compatibility_level"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:119:1: compatibility_level : ^( PROP_CL INTLITERAL ) ;
    public final void compatibility_level() throws RecognitionException {
        CommonTree INTLITERAL4=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:120:2: ( ^( PROP_CL INTLITERAL ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:120:4: ^( PROP_CL INTLITERAL )
            {
            match(input,PROP_CL,FOLLOW_PROP_CL_in_compatibility_level375); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            INTLITERAL4=(CommonTree)match(input,INTLITERAL,FOLLOW_INTLITERAL_in_compatibility_level377); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
              ((project_scope)project_stack.peek()).currentPlan.setCompatibilityLevel(Integer.parseInt((INTLITERAL4!=null?INTLITERAL4.getText():null)));
              }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "project_type"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:126:1: project_type : ^( PROP_PROJ_TYPE IDENTIFIER ) ;
    public final void project_type() throws RecognitionException {
        CommonTree IDENTIFIER5=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:127:2: ( ^( PROP_PROJ_TYPE IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:127:4: ^( PROP_PROJ_TYPE IDENTIFIER )
            {
            match(input,PROP_PROJ_TYPE,FOLLOW_PROP_PROJ_TYPE_in_project_type396); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER5=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_project_type398); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
              ((project_scope)project_stack.peek()).currentPlan.setProjectType((IDENTIFIER5!=null?IDENTIFIER5.getText():null));
              }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "multithreaded"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:134:1: multithreaded : ^( PROP_MULTI_THREAD booleanLiteral ) ;
    public final void multithreaded() throws RecognitionException {
        ForteAST.booleanLiteral_return booleanLiteral6 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:135:2: ( ^( PROP_MULTI_THREAD booleanLiteral ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:135:4: ^( PROP_MULTI_THREAD booleanLiteral )
            {
            match(input,PROP_MULTI_THREAD,FOLLOW_PROP_MULTI_THREAD_in_multithreaded417); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_booleanLiteral_in_multithreaded419);
            booleanLiteral6=booleanLiteral();

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

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
              ((project_scope)project_stack.peek()).currentPlan.setMultiThreaded(Boolean.parseBoolean((booleanLiteral6!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(booleanLiteral6.start),input.getTreeAdaptor().getTokenStopIndex(booleanLiteral6.start))):null)));
              }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "internal"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:141:1: internal : ^( PROP_INTERNAL booleanLiteral ) ;
    public final void internal() throws RecognitionException {
        ForteAST.booleanLiteral_return booleanLiteral7 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:142:2: ( ^( PROP_INTERNAL booleanLiteral ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:142:4: ^( PROP_INTERNAL booleanLiteral )
            {
            match(input,PROP_INTERNAL,FOLLOW_PROP_INTERNAL_in_internal435); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_booleanLiteral_in_internal437);
            booleanLiteral7=booleanLiteral();

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

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
              ((project_scope)project_stack.peek()).currentPlan.setInternal(Boolean.parseBoolean((booleanLiteral7!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(booleanLiteral7.start),input.getTreeAdaptor().getTokenStopIndex(booleanLiteral7.start))):null)));
              }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "library_name"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:148:1: library_name : ^( PROP_LIBRARY_NAME STRINGLITERAL ) ;
    public final void library_name() throws RecognitionException {
        CommonTree STRINGLITERAL8=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:149:2: ( ^( PROP_LIBRARY_NAME STRINGLITERAL ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:149:4: ^( PROP_LIBRARY_NAME STRINGLITERAL )
            {
            match(input,PROP_LIBRARY_NAME,FOLLOW_PROP_LIBRARY_NAME_in_library_name453); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            STRINGLITERAL8=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_library_name455); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
              ((project_scope)project_stack.peek()).currentPlan.setLibraryName((STRINGLITERAL8!=null?STRINGLITERAL8.getText():null));
              }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "starting_method"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:156:1: starting_method : ^( PROP_START_METHOD c= IDENTIFIER m= IDENTIFIER ) ;
    public final void starting_method() throws RecognitionException {
        CommonTree c=null;
        CommonTree m=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:157:2: ( ^( PROP_START_METHOD c= IDENTIFIER m= IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:157:4: ^( PROP_START_METHOD c= IDENTIFIER m= IDENTIFIER )
            {
            match(input,PROP_START_METHOD,FOLLOW_PROP_START_METHOD_in_starting_method472); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            c=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_starting_method476); if (state.failed) return ;

            m=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_starting_method480); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                ((project_scope)project_stack.peek()).currentPlan.setStartClass((c!=null?c.getText():null));
                ((project_scope)project_stack.peek()).currentPlan.setStartMethod((m!=null?m.getText():null));
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "application"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:164:1: application : ^( PROP_APPLICATION STRINGLITERAL STRINGLITERAL ) ;
    public final void application() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:165:3: ( ^( PROP_APPLICATION STRINGLITERAL STRINGLITERAL ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:165:5: ^( PROP_APPLICATION STRINGLITERAL STRINGLITERAL )
            {
            match(input,PROP_APPLICATION,FOLLOW_PROP_APPLICATION_in_application498); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_application500); if (state.failed) return ;

            match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_application502); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "forward"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:168:1: forward : ( forward_class | forward_mapped_class | forward_interface | forward_cursor );
    public final void forward() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:169:2: ( forward_class | forward_mapped_class | forward_interface | forward_cursor )
            int alt15=4;
            switch ( input.LA(1) ) {
            case FORWARD_CLASS:
                {
                alt15=1;
                }
                break;
            case FORWARD_MAPPED_CLASS:
                {
                alt15=2;
                }
                break;
            case FORWARD_INTERFACE:
                {
                alt15=3;
                }
                break;
            case FORWARD_CURSOR:
                {
                alt15=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;

            }

            switch (alt15) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:170:3: forward_class
                    {
                    pushFollow(FOLLOW_forward_class_in_forward519);
                    forward_class();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:171:5: forward_mapped_class
                    {
                    pushFollow(FOLLOW_forward_mapped_class_in_forward525);
                    forward_mapped_class();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:172:5: forward_interface
                    {
                    pushFollow(FOLLOW_forward_interface_in_forward531);
                    forward_interface();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:173:5: forward_cursor
                    {
                    pushFollow(FOLLOW_forward_cursor_in_forward537);
                    forward_cursor();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "forward_class"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:176:1: forward_class : ^( FORWARD_CLASS IDENTIFIER ) ;
    public final void forward_class() throws RecognitionException {
        CommonTree IDENTIFIER9=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:177:2: ( ^( FORWARD_CLASS IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:177:4: ^( FORWARD_CLASS IDENTIFIER )
            {
            match(input,FORWARD_CLASS,FOLLOW_FORWARD_CLASS_in_forward_class550); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER9=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_class552); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                ((project_scope)project_stack.peek()).currentPlan.addForwardDeclaration((IDENTIFIER9!=null?IDENTIFIER9.getText():null), ToolForwardDeclaration.Kind.CLASS);
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "forward_mapped_class"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:183:1: forward_mapped_class : ^( FORWARD_MAPPED_CLASS IDENTIFIER ) ;
    public final void forward_mapped_class() throws RecognitionException {
        CommonTree IDENTIFIER10=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:184:2: ( ^( FORWARD_MAPPED_CLASS IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:184:4: ^( FORWARD_MAPPED_CLASS IDENTIFIER )
            {
            match(input,FORWARD_MAPPED_CLASS,FOLLOW_FORWARD_MAPPED_CLASS_in_forward_mapped_class571); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER10=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_mapped_class573); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                ((project_scope)project_stack.peek()).currentPlan.addForwardDeclaration((IDENTIFIER10!=null?IDENTIFIER10.getText():null), ToolForwardDeclaration.Kind.WINDOW);
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "forward_interface"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:189:1: forward_interface : ^( FORWARD_INTERFACE IDENTIFIER ) ;
    public final void forward_interface() throws RecognitionException {
        CommonTree IDENTIFIER11=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:190:2: ( ^( FORWARD_INTERFACE IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:190:4: ^( FORWARD_INTERFACE IDENTIFIER )
            {
            match(input,FORWARD_INTERFACE,FOLLOW_FORWARD_INTERFACE_in_forward_interface591); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER11=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_interface593); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                ((project_scope)project_stack.peek()).currentPlan.addForwardDeclaration((IDENTIFIER11!=null?IDENTIFIER11.getText():null), ToolForwardDeclaration.Kind.INTERFACE);
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "forward_cursor"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:195:1: forward_cursor : ^( FORWARD_CURSOR IDENTIFIER ) ;
    public final void forward_cursor() throws RecognitionException {
        CommonTree IDENTIFIER12=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:196:2: ( ^( FORWARD_CURSOR IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:196:4: ^( FORWARD_CURSOR IDENTIFIER )
            {
            match(input,FORWARD_CURSOR,FOLLOW_FORWARD_CURSOR_in_forward_cursor611); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER12=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_cursor613); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                ((project_scope)project_stack.peek()).currentPlan.addForwardDeclaration((IDENTIFIER12!=null?IDENTIFIER12.getText():null), ToolForwardDeclaration.Kind.CURSOR);
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "include"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:202:1: include : ^( INCLUDE IDENTIFIER IDENTIFIER ) ;
    public final void include() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:203:2: ( ^( INCLUDE IDENTIFIER IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:203:4: ^( INCLUDE IDENTIFIER IDENTIFIER )
            {
            match(input,INCLUDE,FOLLOW_INCLUDE_in_include633); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_include636); if (state.failed) return ;

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_include638); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "uuid"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:206:1: uuid : ^( UUID STRINGLITERAL ) ;
    public final void uuid() throws RecognitionException {
        CommonTree STRINGLITERAL13=null;

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:207:2: ( ^( UUID STRINGLITERAL ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:207:4: ^( UUID STRINGLITERAL )
            {
            match(input,UUID,FOLLOW_UUID_in_uuid652); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            STRINGLITERAL13=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_uuid654); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            if ( state.backtracking==0 ) {
                String wholeString = (STRINGLITERAL13!=null?STRINGLITERAL13.getText():null);
                String uuidString = wholeString.substring(1, wholeString.length()-1);
                ((project_scope)project_stack.peek()).currentPlan.setUUID(java.util.UUID.fromString(uuidString));
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "declatrationTerminator"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:217:1: declatrationTerminator : ( property )* ;
    public final void declatrationTerminator() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:218:2: ( ( property )* )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:218:4: ( property )*
            {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:218:4: ( property )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==PROPERTY) ) {
                    alt16=1;
                }


                switch (alt16) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:218:4: property
                  {
                  pushFollow(FOLLOW_property_in_declatrationTerminator672);
                  property();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "cDataTypeDeclatation"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:221:1: cDataTypeDeclatation[String projectName] : ( cStruct | cEnum | cTypeDef );
    public final void cDataTypeDeclatation(String projectName) throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:222:3: ( cStruct | cEnum | cTypeDef )
            int alt17=3;
            switch ( input.LA(1) ) {
            case STRUCT:
                {
                alt17=1;
                }
                break;
            case ENUM:
                {
                alt17=2;
                }
                break;
            case TYPEDEF:
                {
                alt17=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;

            }

            switch (alt17) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:222:5: cStruct
                    {
                    pushFollow(FOLLOW_cStruct_in_cDataTypeDeclatation686);
                    cStruct();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:223:5: cEnum
                    {
                    pushFollow(FOLLOW_cEnum_in_cDataTypeDeclatation692);
                    cEnum();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:224:5: cTypeDef
                    {
                    pushFollow(FOLLOW_cTypeDef_in_cDataTypeDeclatation698);
                    cTypeDef();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "serviceDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:231:1: serviceDeclaration[String projectName] returns [ToolServiceObject so] : ^( SERVICE IDENTIFIER qualifiedType ( serviceAttribute[so] )+ ^( UUID STRINGLITERAL ) ) ;
    public final ToolServiceObject serviceDeclaration(String projectName) throws RecognitionException {
        ToolServiceObject so = null;


        CommonTree IDENTIFIER14=null;
        CommonTree STRINGLITERAL16=null;
        ForteAST.qualifiedType_return qualifiedType15 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:237:2: ( ^( SERVICE IDENTIFIER qualifiedType ( serviceAttribute[so] )+ ^( UUID STRINGLITERAL ) ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:237:4: ^( SERVICE IDENTIFIER qualifiedType ( serviceAttribute[so] )+ ^( UUID STRINGLITERAL ) )
            {
            match(input,SERVICE,FOLLOW_SERVICE_in_serviceDeclaration725); if (state.failed) return so;

            match(input, Token.DOWN, null); if (state.failed) return so;
            IDENTIFIER14=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_serviceDeclaration727); if (state.failed) return so;

            pushFollow(FOLLOW_qualifiedType_in_serviceDeclaration729);
            qualifiedType15=qualifiedType();

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

            if ( state.backtracking==0 ) {
                so = new ToolServiceObject((IDENTIFIER14!=null?IDENTIFIER14.getText():null));
                so.setType((qualifiedType15!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(qualifiedType15.start),input.getTreeAdaptor().getTokenStopIndex(qualifiedType15.start))):null));
                so.setPlanName(projectName);
                }

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:243:3: ( serviceAttribute[so] )+
            int cnt18=0;
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( ((LA18_0 >= SO_DIALOG && LA18_0 <= SO_VIS)) ) {
                    alt18=1;
                }


                switch (alt18) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:243:3: serviceAttribute[so]
                  {
                  pushFollow(FOLLOW_serviceAttribute_in_serviceDeclaration738);
                  serviceAttribute(so);

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

                  }
                  break;

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


            match(input,UUID,FOLLOW_UUID_in_serviceDeclaration746); if (state.failed) return so;

            match(input, Token.DOWN, null); if (state.failed) return so;
            STRINGLITERAL16=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceDeclaration748); if (state.failed) return so;

            if ( state.backtracking==0 ) {so.setUuid(so.stripQuotes((STRINGLITERAL16!=null?STRINGLITERAL16.getText():null)));}

            match(input, Token.UP, null); if (state.failed) return so;


            match(input, Token.UP, null); if (state.failed) return so;


            }

            if ( state.backtracking==0 ) {
             if (((project_scope)project_stack.peek()).currentPlan != null){
                 ((project_scope)project_stack.peek()).currentPlan.addServiceObject(so);
             }
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
          // do for sure before leaving
        }
        return so;
    }
    // $ANTLR end "serviceDeclaration"



    // $ANTLR start "serviceAttribute"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:248:1: serviceAttribute[ToolServiceObject so] : ( ^( SO_VIS IDENTIFIER ) | ^( SO_DIALOG dialogType ) | ^( SO_FAILOVER booleanLiteral ) | ^( SO_LOADBALANCE booleanLiteral ) | ^( SO_PATH STRINGLITERAL ) | ^( SO_EXT_MGR STRINGLITERAL ) | ^( SO_RESOURCE STRINGLITERAL ) | ^( SO_USERNAME STRINGLITERAL ) | ^( SO_PASSWORD STRINGLITERAL ) );
    public final void serviceAttribute(ToolServiceObject so) throws RecognitionException {
        CommonTree IDENTIFIER17=null;
        CommonTree STRINGLITERAL21=null;
        CommonTree STRINGLITERAL22=null;
        CommonTree STRINGLITERAL23=null;
        CommonTree STRINGLITERAL24=null;
        CommonTree STRINGLITERAL25=null;
        ForteAST.dialogType_return dialogType18 =null;

        ForteAST.booleanLiteral_return booleanLiteral19 =null;

        ForteAST.booleanLiteral_return booleanLiteral20 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:249:2: ( ^( SO_VIS IDENTIFIER ) | ^( SO_DIALOG dialogType ) | ^( SO_FAILOVER booleanLiteral ) | ^( SO_LOADBALANCE booleanLiteral ) | ^( SO_PATH STRINGLITERAL ) | ^( SO_EXT_MGR STRINGLITERAL ) | ^( SO_RESOURCE STRINGLITERAL ) | ^( SO_USERNAME STRINGLITERAL ) | ^( SO_PASSWORD STRINGLITERAL ) )
            int alt19=9;
            switch ( input.LA(1) ) {
            case SO_VIS:
                {
                alt19=1;
                }
                break;
            case SO_DIALOG:
                {
                alt19=2;
                }
                break;
            case SO_FAILOVER:
                {
                alt19=3;
                }
                break;
            case SO_LOADBALANCE:
                {
                alt19=4;
                }
                break;
            case SO_PATH:
                {
                alt19=5;
                }
                break;
            case SO_EXT_MGR:
                {
                alt19=6;
                }
                break;
            case SO_RESOURCE:
                {
                alt19=7;
                }
                break;
            case SO_USERNAME:
                {
                alt19=8;
                }
                break;
            case SO_PASSWORD:
                {
                alt19=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;

            }

            switch (alt19) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:249:4: ^( SO_VIS IDENTIFIER )
                    {
                    match(input,SO_VIS,FOLLOW_SO_VIS_in_serviceAttribute768); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    IDENTIFIER17=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_serviceAttribute770); if (state.failed) return ;

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setVisability((IDENTIFIER17!=null?IDENTIFIER17.getText():null));}

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:251:4: ^( SO_DIALOG dialogType )
                    {
                    match(input,SO_DIALOG,FOLLOW_SO_DIALOG_in_serviceAttribute781); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_dialogType_in_serviceAttribute783);
                    dialogType18=dialogType();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setDialogDuration((dialogType18!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(dialogType18.start),input.getTreeAdaptor().getTokenStopIndex(dialogType18.start))):null));}

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:253:4: ^( SO_FAILOVER booleanLiteral )
                    {
                    match(input,SO_FAILOVER,FOLLOW_SO_FAILOVER_in_serviceAttribute794); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_booleanLiteral_in_serviceAttribute796);
                    booleanLiteral19=booleanLiteral();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setFailOver((booleanLiteral19!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(booleanLiteral19.start),input.getTreeAdaptor().getTokenStopIndex(booleanLiteral19.start))):null));}

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:255:4: ^( SO_LOADBALANCE booleanLiteral )
                    {
                    match(input,SO_LOADBALANCE,FOLLOW_SO_LOADBALANCE_in_serviceAttribute807); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_booleanLiteral_in_serviceAttribute809);
                    booleanLiteral20=booleanLiteral();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setLoadBalance((booleanLiteral20!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(booleanLiteral20.start),input.getTreeAdaptor().getTokenStopIndex(booleanLiteral20.start))):null));}

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:257:4: ^( SO_PATH STRINGLITERAL )
                    {
                    match(input,SO_PATH,FOLLOW_SO_PATH_in_serviceAttribute820); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    STRINGLITERAL21=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceAttribute822); if (state.failed) return ;

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setSearchPath(so.stripQuotes((STRINGLITERAL21!=null?STRINGLITERAL21.getText():null)));}

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:259:4: ^( SO_EXT_MGR STRINGLITERAL )
                    {
                    match(input,SO_EXT_MGR,FOLLOW_SO_EXT_MGR_in_serviceAttribute834); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    STRINGLITERAL22=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceAttribute836); if (state.failed) return ;

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setExternalManager(so.stripQuotes((STRINGLITERAL22!=null?STRINGLITERAL22.getText():null)));}

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:261:4: ^( SO_RESOURCE STRINGLITERAL )
                    {
                    match(input,SO_RESOURCE,FOLLOW_SO_RESOURCE_in_serviceAttribute847); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    STRINGLITERAL23=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceAttribute849); if (state.failed) return ;

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setResourceName(so.stripQuotes((STRINGLITERAL23!=null?STRINGLITERAL23.getText():null)));}

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:263:4: ^( SO_USERNAME STRINGLITERAL )
                    {
                    match(input,SO_USERNAME,FOLLOW_SO_USERNAME_in_serviceAttribute860); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    STRINGLITERAL24=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceAttribute862); if (state.failed) return ;

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setUserName(so.stripQuotes((STRINGLITERAL24!=null?STRINGLITERAL24.getText():null)));}

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:265:4: ^( SO_PASSWORD STRINGLITERAL )
                    {
                    match(input,SO_PASSWORD,FOLLOW_SO_PASSWORD_in_serviceAttribute873); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    STRINGLITERAL25=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceAttribute875); if (state.failed) return ;

                    match(input, Token.UP, null); if (state.failed) return ;


                    if ( state.backtracking==0 ) {so.setUserPassword(so.stripQuotes((STRINGLITERAL25!=null?STRINGLITERAL25.getText():null)));}

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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


    public static class dialogType_return extends TreeRuleReturnScope {
    };


    // $ANTLR start "dialogType"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:269:1: dialogType : ( IDENTIFIER | TRANSACTION );
    public final ForteAST.dialogType_return dialogType() throws RecognitionException {
        ForteAST.dialogType_return retval = new ForteAST.dialogType_return();
        retval.start = input.LT(1);


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:269:12: ( IDENTIFIER | TRANSACTION )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==IDENTIFIER||input.LA(1)==TRANSACTION ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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


    public static class compound_property_return extends TreeRuleReturnScope {
        public String name;
        public List<ToolProperty> props;
    };


    // $ANTLR start "compound_property"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:278:1: compound_property returns [String name, List<ToolProperty> props] : ^( PROPERTY ^(id= IDENTIFIER (prop= property )+ ) ) ;
    public final ForteAST.compound_property_return compound_property() throws RecognitionException {
        ForteAST.compound_property_return retval = new ForteAST.compound_property_return();
        retval.start = input.LT(1);


        CommonTree id=null;
        ToolProperty prop =null;



          retval.props = new ArrayList<ToolProperty>();

        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:282:2: ( ^( PROPERTY ^(id= IDENTIFIER (prop= property )+ ) ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:282:4: ^( PROPERTY ^(id= IDENTIFIER (prop= property )+ ) )
            {
            match(input,PROPERTY,FOLLOW_PROPERTY_in_compound_property924); if (state.failed) return retval;

            match(input, Token.DOWN, null); if (state.failed) return retval;
            id=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_compound_property929); if (state.failed) return retval;

            match(input, Token.DOWN, null); if (state.failed) return retval;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:282:31: (prop= property )+
            int cnt20=0;
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==PROPERTY) ) {
                    alt20=1;
                }


                switch (alt20) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:282:32: prop= property
                  {
                  pushFollow(FOLLOW_property_in_compound_property934);
                  prop=property();

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

                  if ( state.backtracking==0 ) { retval.props.add(prop);}

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return retval;


            match(input, Token.UP, null); if (state.failed) return retval;


            if ( state.backtracking==0 ) {
                retval.name = (id!=null?id.getText():null);
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "extended_property"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:288:1: extended_property : ^( EXTENDED ( property )+ ) ;
    public final void extended_property() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:289:2: ( ^( EXTENDED ( property )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:289:4: ^( EXTENDED ( property )+ )
            {
            match(input,EXTENDED,FOLLOW_EXTENDED_in_extended_property958); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:289:15: ( property )+
            int cnt21=0;
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==PROPERTY) ) {
                    alt21=1;
                }


                switch (alt21) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:289:15: property
                  {
                  pushFollow(FOLLOW_property_in_extended_property960);
                  property();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "property"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:292:1: property returns [ToolProperty toolProp] : ( ^( PROPERTY IDENTIFIER literal ) | ^( PROPERTY id1= IDENTIFIER id2= IDENTIFIER ) );
    public final ToolProperty property() throws RecognitionException {
        ToolProperty toolProp = null;


        CommonTree id1=null;
        CommonTree id2=null;
        CommonTree IDENTIFIER26=null;
        ForteAST.literal_return literal27 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:293:2: ( ^( PROPERTY IDENTIFIER literal ) | ^( PROPERTY id1= IDENTIFIER id2= IDENTIFIER ) )
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==PROPERTY) ) {
                int LA22_1 = input.LA(2);

                if ( (LA22_1==DOWN) ) {
                    int LA22_2 = input.LA(3);

                    if ( (LA22_2==IDENTIFIER) ) {
                        int LA22_3 = input.LA(4);

                        if ( (LA22_3==IDENTIFIER) ) {
                            alt22=2;
                        }
                        else if ( ((LA22_3 >= FALSE && LA22_3 <= FLOATLITERAL)||LA22_3==HEXLITERAL||LA22_3==INTLITERAL||LA22_3==NIL||LA22_3==STRINGLITERAL||LA22_3==TRUE) ) {
                            alt22=1;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return toolProp;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 22, 3, input);

                            throw nvae;

                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return toolProp;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 22, 2, input);

                        throw nvae;

                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return toolProp;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 22, 1, input);

                    throw nvae;

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

                throw nvae;

            }
            switch (alt22) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:293:4: ^( PROPERTY IDENTIFIER literal )
                    {
                    match(input,PROPERTY,FOLLOW_PROPERTY_in_property978); if (state.failed) return toolProp;

                    match(input, Token.DOWN, null); if (state.failed) return toolProp;
                    IDENTIFIER26=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_property980); if (state.failed) return toolProp;

                    pushFollow(FOLLOW_literal_in_property982);
                    literal27=literal();

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

                    match(input, Token.UP, null); if (state.failed) return toolProp;


                    if ( state.backtracking==0 ) {
                        toolProp = new ToolProperty();
                        toolProp.setToolName((IDENTIFIER26!=null?IDENTIFIER26.getText():null));
                        toolProp.setValue((literal27!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(literal27.start),input.getTreeAdaptor().getTokenStopIndex(literal27.start))):null));
                        }

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:299:4: ^( PROPERTY id1= IDENTIFIER id2= IDENTIFIER )
                    {
                    match(input,PROPERTY,FOLLOW_PROPERTY_in_property993); if (state.failed) return toolProp;

                    match(input, Token.DOWN, null); if (state.failed) return toolProp;
                    id1=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_property997); if (state.failed) return toolProp;

                    id2=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_property1001); if (state.failed) return toolProp;

                    match(input, Token.UP, null); if (state.failed) return toolProp;


                    if ( state.backtracking==0 ) {
                        toolProp = new ToolProperty();
                        toolProp.setToolName((id1!=null?id1.getText():null));
                        toolProp.setValue((id2!=null?id2.getText():null));
                        }

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
          // do for sure before leaving
        }
        return toolProp;
    }
    // $ANTLR end "property"



    // $ANTLR start "interfaceDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:312:1: interfaceDeclaration[String projectName] : ^( INTERFACE_DECLARATION IDENTIFIER ( qualifiedType )? ( component_definition )* ( classProperties )+ ) ;
    public final void interfaceDeclaration(String projectName) throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:313:2: ( ^( INTERFACE_DECLARATION IDENTIFIER ( qualifiedType )? ( component_definition )* ( classProperties )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:313:4: ^( INTERFACE_DECLARATION IDENTIFIER ( qualifiedType )? ( component_definition )* ( classProperties )+ )
            {
            match(input,INTERFACE_DECLARATION,FOLLOW_INTERFACE_DECLARATION_in_interfaceDeclaration1025); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceDeclaration1027); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:313:39: ( qualifiedType )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==IDENTIFIER) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:313:39: qualifiedType
                    {
                    pushFollow(FOLLOW_qualifiedType_in_interfaceDeclaration1029);
                    qualifiedType();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:314:6: ( component_definition )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==ATTRIBUTE_DECLARATION||LA24_0==CONSTANT||(LA24_0 >= EVENT_DECLARATION && LA24_0 <= EVENT_HANDLER_DECLARATION)||LA24_0==METHOD_DECLARATION||LA24_0==VIRTUAL_ATTRIBUTE||LA24_0==WINDOW_ATTRIBUTE_DECLARATION) ) {
                    alt24=1;
                }


                switch (alt24) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:314:6: component_definition
                  {
                  pushFollow(FOLLOW_component_definition_in_interfaceDeclaration1038);
                  component_definition();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:314:28: ( classProperties )+
            int cnt25=0;
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==CLASSLINEAGE||LA25_0==DISTRIBUTED||LA25_0==EXTENDED||LA25_0==MONITORED||LA25_0==PROPERTY||LA25_0==PROP_INTERNAL||LA25_0==PROP_RESTRICTED||LA25_0==SHARED||LA25_0==TRANSACTIONAL) ) {
                    alt25=1;
                }


                switch (alt25) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:314:28: classProperties
                  {
                  pushFollow(FOLLOW_classProperties_in_interfaceDeclaration1041);
                  classProperties();

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

                  }
                  break;

              default :
                  if ( cnt25 >= 1 ) break loop25;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(25, input);
                        throw eee;
                }
                cnt25++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "cursorDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:320:1: cursorDeclaration[String projectName] : CURSOR_DECLARATION ;
    public final void cursorDeclaration(String projectName) throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:321:3: ( CURSOR_DECLARATION )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:321:5: CURSOR_DECLARATION
            {
            match(input,CURSOR_DECLARATION,FOLLOW_CURSOR_DECLARATION_in_cursorDeclaration1061); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "classDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:328:1: classDeclaration[String projectName] returns [ToolClass toolClass] : ^( CLASS_DECLARATION IDENTIFIER ( isMappedClass )? superT= qualifiedType ( cEnum )* ( component_definition )* ( ^( IMPLEMENTS qualifiedType ) )* ( classProperties )+ ( STRINGLITERAL )? ) ;
    public final ToolClass classDeclaration(String projectName) throws RecognitionException {
        ToolClass toolClass = null;


        CommonTree IDENTIFIER28=null;
        ForteAST.qualifiedType_return superT =null;

        ForteAST.isMappedClass_return isMappedClass29 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:329:5: ( ^( CLASS_DECLARATION IDENTIFIER ( isMappedClass )? superT= qualifiedType ( cEnum )* ( component_definition )* ( ^( IMPLEMENTS qualifiedType ) )* ( classProperties )+ ( STRINGLITERAL )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:329:7: ^( CLASS_DECLARATION IDENTIFIER ( isMappedClass )? superT= qualifiedType ( cEnum )* ( component_definition )* ( ^( IMPLEMENTS qualifiedType ) )* ( classProperties )+ ( STRINGLITERAL )? )
            {
            match(input,CLASS_DECLARATION,FOLLOW_CLASS_DECLARATION_in_classDeclaration1086); if (state.failed) return toolClass;

            match(input, Token.DOWN, null); if (state.failed) return toolClass;
            IDENTIFIER28=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_classDeclaration1088); if (state.failed) return toolClass;

            if ( state.backtracking==0 ) { toolClass = new ToolClass((IDENTIFIER28!=null?IDENTIFIER28.getText():null));}

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:331:5: ( isMappedClass )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==MAPPED) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:331:6: isMappedClass
                    {
                    pushFollow(FOLLOW_isMappedClass_in_classDeclaration1102);
                    isMappedClass29=isMappedClass();

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

                    if ( state.backtracking==0 ) { toolClass.setMapped(Boolean.parseBoolean((isMappedClass29!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(isMappedClass29.start),input.getTreeAdaptor().getTokenStopIndex(isMappedClass29.start))):null)));}

                    }
                    break;

            }


            pushFollow(FOLLOW_qualifiedType_in_classDeclaration1119);
            superT=qualifiedType();

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

            if ( state.backtracking==0 ) { toolClass.setSuperClass((superT!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(superT.start),input.getTreeAdaptor().getTokenStopIndex(superT.start))):null));}

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:335:5: ( cEnum )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==ENUM) ) {
                    alt27=1;
                }


                switch (alt27) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:335:5: cEnum
                  {
                  pushFollow(FOLLOW_cEnum_in_classDeclaration1132);
                  cEnum();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:336:5: ( component_definition )*
            loop28:
            do {
                int alt28=2;
                int LA28_0 = input.LA(1);

                if ( (LA28_0==ATTRIBUTE_DECLARATION||LA28_0==CONSTANT||(LA28_0 >= EVENT_DECLARATION && LA28_0 <= EVENT_HANDLER_DECLARATION)||LA28_0==METHOD_DECLARATION||LA28_0==VIRTUAL_ATTRIBUTE||LA28_0==WINDOW_ATTRIBUTE_DECLARATION) ) {
                    alt28=1;
                }


                switch (alt28) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:336:5: component_definition
                  {
                  pushFollow(FOLLOW_component_definition_in_classDeclaration1139);
                  component_definition();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:337:5: ( ^( IMPLEMENTS qualifiedType ) )*
            loop29:
            do {
                int alt29=2;
                int LA29_0 = input.LA(1);

                if ( (LA29_0==IMPLEMENTS) ) {
                    alt29=1;
                }


                switch (alt29) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:337:6: ^( IMPLEMENTS qualifiedType )
                  {
                  match(input,IMPLEMENTS,FOLLOW_IMPLEMENTS_in_classDeclaration1149); if (state.failed) return toolClass;

                  match(input, Token.DOWN, null); if (state.failed) return toolClass;
                  pushFollow(FOLLOW_qualifiedType_in_classDeclaration1151);
                  qualifiedType();

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

                  match(input, Token.UP, null); if (state.failed) return toolClass;


                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:338:5: ( classProperties )+
            int cnt30=0;
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==CLASSLINEAGE||LA30_0==DISTRIBUTED||LA30_0==EXTENDED||LA30_0==MONITORED||LA30_0==PROPERTY||LA30_0==PROP_INTERNAL||LA30_0==PROP_RESTRICTED||LA30_0==SHARED||LA30_0==TRANSACTIONAL) ) {
                    alt30=1;
                }


                switch (alt30) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:338:5: classProperties
                  {
                  pushFollow(FOLLOW_classProperties_in_classDeclaration1161);
                  classProperties();

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

                  }
                  break;

              default :
                  if ( cnt30 >= 1 ) break loop30;
                  if (state.backtracking>0) {state.failed=true; return toolClass;}
                        EarlyExitException eee =
                            new EarlyExitException(30, input);
                        throw eee;
                }
                cnt30++;
            } while (true);


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:338:22: ( STRINGLITERAL )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==STRINGLITERAL) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:338:22: STRINGLITERAL
                    {
                    match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_classDeclaration1164); if (state.failed) return toolClass;

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return toolClass;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
          // do for sure before leaving
        }
        return toolClass;
    }
    // $ANTLR end "classDeclaration"


    public static class isMappedClass_return extends TreeRuleReturnScope {
    };


    // $ANTLR start "isMappedClass"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:341:1: isMappedClass : MAPPED ;
    public final ForteAST.isMappedClass_return isMappedClass() throws RecognitionException {
        ForteAST.isMappedClass_return retval = new ForteAST.isMappedClass_return();
        retval.start = input.LT(1);


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:342:3: ( MAPPED )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:342:5: MAPPED
            {
            match(input,MAPPED,FOLLOW_MAPPED_in_isMappedClass1181); if (state.failed) return retval;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "component_definition"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:345:1: component_definition : ( attributeDeclaration | windowAttributeDeclaration | virtualAttributeDeclaration | eventDeclaration | methodDeclaration | eventHandlerDeclaration | constantDeclaration[false] );
    public final void component_definition() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:346:3: ( attributeDeclaration | windowAttributeDeclaration | virtualAttributeDeclaration | eventDeclaration | methodDeclaration | eventHandlerDeclaration | constantDeclaration[false] )
            int alt32=7;
            switch ( input.LA(1) ) {
            case ATTRIBUTE_DECLARATION:
                {
                alt32=1;
                }
                break;
            case WINDOW_ATTRIBUTE_DECLARATION:
                {
                alt32=2;
                }
                break;
            case VIRTUAL_ATTRIBUTE:
                {
                alt32=3;
                }
                break;
            case EVENT_DECLARATION:
                {
                alt32=4;
                }
                break;
            case METHOD_DECLARATION:
                {
                alt32=5;
                }
                break;
            case EVENT_HANDLER_DECLARATION:
                {
                alt32=6;
                }
                break;
            case CONSTANT:
                {
                alt32=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;

            }

            switch (alt32) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:346:5: attributeDeclaration
                    {
                    pushFollow(FOLLOW_attributeDeclaration_in_component_definition1194);
                    attributeDeclaration();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:347:5: windowAttributeDeclaration
                    {
                    pushFollow(FOLLOW_windowAttributeDeclaration_in_component_definition1200);
                    windowAttributeDeclaration();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:348:5: virtualAttributeDeclaration
                    {
                    pushFollow(FOLLOW_virtualAttributeDeclaration_in_component_definition1206);
                    virtualAttributeDeclaration();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:349:5: eventDeclaration
                    {
                    pushFollow(FOLLOW_eventDeclaration_in_component_definition1212);
                    eventDeclaration();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:350:5: methodDeclaration
                    {
                    pushFollow(FOLLOW_methodDeclaration_in_component_definition1218);
                    methodDeclaration();

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:351:5: eventHandlerDeclaration
                    {
                    pushFollow(FOLLOW_eventHandlerDeclaration_in_component_definition1224);
                    eventHandlerDeclaration();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:352:5: constantDeclaration[false]
                    {
                    pushFollow(FOLLOW_constantDeclaration_in_component_definition1230);
                    constantDeclaration(false);

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "attributeDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:359:1: attributeDeclaration : ^( ATTRIBUTE_DECLARATION modifier name type ( GENERATED )? ) ;
    public final void attributeDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:360:3: ( ^( ATTRIBUTE_DECLARATION modifier name type ( GENERATED )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:360:5: ^( ATTRIBUTE_DECLARATION modifier name type ( GENERATED )? )
            {
            match(input,ATTRIBUTE_DECLARATION,FOLLOW_ATTRIBUTE_DECLARATION_in_attributeDeclaration1250); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_modifier_in_attributeDeclaration1252);
            modifier();

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

            pushFollow(FOLLOW_name_in_attributeDeclaration1254);
            name();

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

            pushFollow(FOLLOW_type_in_attributeDeclaration1256);
            type();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:360:49: ( GENERATED )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==GENERATED) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:360:49: GENERATED
                    {
                    match(input,GENERATED,FOLLOW_GENERATED_in_attributeDeclaration1259); if (state.failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "windowAttributeDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:363:1: windowAttributeDeclaration : ^( WINDOW_ATTRIBUTE_DECLARATION modifier WIDGETIDENTFIER type GENERATED ) ;
    public final void windowAttributeDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:364:2: ( ^( WINDOW_ATTRIBUTE_DECLARATION modifier WIDGETIDENTFIER type GENERATED ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:364:4: ^( WINDOW_ATTRIBUTE_DECLARATION modifier WIDGETIDENTFIER type GENERATED )
            {
            match(input,WINDOW_ATTRIBUTE_DECLARATION,FOLLOW_WINDOW_ATTRIBUTE_DECLARATION_in_windowAttributeDeclaration1276); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_modifier_in_windowAttributeDeclaration1278);
            modifier();

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

            match(input,WIDGETIDENTFIER,FOLLOW_WIDGETIDENTFIER_in_windowAttributeDeclaration1280); if (state.failed) return ;

            pushFollow(FOLLOW_type_in_windowAttributeDeclaration1282);
            type();

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

            match(input,GENERATED,FOLLOW_GENERATED_in_windowAttributeDeclaration1285); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "virtualAttributeDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:367:1: virtualAttributeDeclaration : ^( VIRTUAL_ATTRIBUTE modifier name type getExpression ( setExpression )? ) ;
    public final void virtualAttributeDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:368:2: ( ^( VIRTUAL_ATTRIBUTE modifier name type getExpression ( setExpression )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:368:4: ^( VIRTUAL_ATTRIBUTE modifier name type getExpression ( setExpression )? )
            {
            match(input,VIRTUAL_ATTRIBUTE,FOLLOW_VIRTUAL_ATTRIBUTE_in_virtualAttributeDeclaration1298); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_modifier_in_virtualAttributeDeclaration1300);
            modifier();

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

            pushFollow(FOLLOW_name_in_virtualAttributeDeclaration1302);
            name();

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

            pushFollow(FOLLOW_type_in_virtualAttributeDeclaration1304);
            type();

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

            pushFollow(FOLLOW_getExpression_in_virtualAttributeDeclaration1307);
            getExpression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:368:58: ( setExpression )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==SET_EXPRESSION) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:368:58: setExpression
                    {
                    pushFollow(FOLLOW_setExpression_in_virtualAttributeDeclaration1309);
                    setExpression();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "getExpression"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:371:1: getExpression : ^( GET_EXPRESSION expression ) ;
    public final void getExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:372:2: ( ^( GET_EXPRESSION expression ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:372:4: ^( GET_EXPRESSION expression )
            {
            match(input,GET_EXPRESSION,FOLLOW_GET_EXPRESSION_in_getExpression1325); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_getExpression1327);
            expression();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "setExpression"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:375:1: setExpression : ^( SET_EXPRESSION expression ) ;
    public final void setExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:376:2: ( ^( SET_EXPRESSION expression ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:376:4: ^( SET_EXPRESSION expression )
            {
            match(input,SET_EXPRESSION,FOLLOW_SET_EXPRESSION_in_setExpression1341); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_setExpression1343);
            expression();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "methodDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:380:1: methodDeclaration : ^( METHOD_DECLARATION modifier qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( methodCompletion )? ) ;
    public final void methodDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:381:2: ( ^( METHOD_DECLARATION modifier qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( methodCompletion )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:381:4: ^( METHOD_DECLARATION modifier qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( methodCompletion )? )
            {
            match(input,METHOD_DECLARATION,FOLLOW_METHOD_DECLARATION_in_methodDeclaration1358); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_modifier_in_methodDeclaration1360);
            modifier();

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

            pushFollow(FOLLOW_qualifiedName_in_methodDeclaration1362);
            qualifiedName();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:381:49: ( formalParameterDecls )?
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==PARAMETER) ) {
                alt35=1;
            }
            switch (alt35) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:381:49: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_methodDeclaration1365);
                    formalParameterDecls();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:382:12: ( methodReturnDeclaration )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==RETURN) ) {
                alt36=1;
            }
            switch (alt36) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:382:12: methodReturnDeclaration
                    {
                    pushFollow(FOLLOW_methodReturnDeclaration_in_methodDeclaration1380);
                    methodReturnDeclaration();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:383:12: ( methodCompletion )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==METHOD_COMPLETION) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:383:12: methodCompletion
                    {
                    pushFollow(FOLLOW_methodCompletion_in_methodDeclaration1395);
                    methodCompletion();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "methodCompletion"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:386:1: methodCompletion : ^( METHOD_COMPLETION IDENTIFIER ( IDENTIFIER )? ) ;
    public final void methodCompletion() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:387:2: ( ^( METHOD_COMPLETION IDENTIFIER ( IDENTIFIER )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:387:4: ^( METHOD_COMPLETION IDENTIFIER ( IDENTIFIER )? )
            {
            match(input,METHOD_COMPLETION,FOLLOW_METHOD_COMPLETION_in_methodCompletion1410); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodCompletion1412); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:387:35: ( IDENTIFIER )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==IDENTIFIER) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:387:35: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodCompletion1414); if (state.failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "methodImplementation"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:390:1: methodImplementation : ^( METHOD_IMPLEMENTATION qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( statement )* ( exceptionBlock )? ) ;
    public final void methodImplementation() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:391:2: ( ^( METHOD_IMPLEMENTATION qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( statement )* ( exceptionBlock )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:391:4: ^( METHOD_IMPLEMENTATION qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( statement )* ( exceptionBlock )? )
            {
            match(input,METHOD_IMPLEMENTATION,FOLLOW_METHOD_IMPLEMENTATION_in_methodImplementation1429); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_qualifiedName_in_methodImplementation1436);
            qualifiedName();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:393:5: ( formalParameterDecls )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==PARAMETER) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:393:5: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_methodImplementation1443);
                    formalParameterDecls();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:394:5: ( methodReturnDeclaration )?
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==RETURN) ) {
                int LA40_1 = input.LA(2);

                if ( (LA40_1==DOWN) ) {
                    int LA40_3 = input.LA(3);

                    if ( (LA40_3==ARRAY_TYPE||LA40_3==IDENTIFIER||LA40_3==POINTER_TYPE||LA40_3==222) ) {
                        alt40=1;
                    }
                }
            }
            switch (alt40) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:394:5: methodReturnDeclaration
                    {
                    pushFollow(FOLLOW_methodReturnDeclaration_in_methodImplementation1451);
                    methodReturnDeclaration();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:395:5: ( statement )*
            loop41:
            do {
                int alt41=2;
                int LA41_0 = input.LA(1);

                if ( (LA41_0==BLOCK||LA41_0==CASE||(LA41_0 >= CONSTANT && LA41_0 <= CONTINUE)||LA41_0==EVENT_CASE||LA41_0==EVENT_LOOP||(LA41_0 >= EXIT && LA41_0 <= EXPR)||(LA41_0 >= FOR_COUNT && LA41_0 <= FOR_SQL)||LA41_0==IF||LA41_0==LOCAL_DECLARATION||LA41_0==POST||LA41_0==RAISE||LA41_0==RETURN||LA41_0==SQL||LA41_0==START_TASK||LA41_0==WHILE||LA41_0==SQL_DO) ) {
                    alt41=1;
                }


                switch (alt41) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:395:5: statement
                  {
                  pushFollow(FOLLOW_statement_in_methodImplementation1459);
                  statement();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:396:5: ( exceptionBlock )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==EXCEPTION) ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:396:5: exceptionBlock
                    {
                    pushFollow(FOLLOW_exceptionBlock_in_methodImplementation1467);
                    exceptionBlock();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "eventHandlerDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:399:1: eventHandlerDeclaration : ^( EVENT_HANDLER_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) ;
    public final void eventHandlerDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:400:2: ( ^( EVENT_HANDLER_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:400:4: ^( EVENT_HANDLER_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? )
            {
            match(input,EVENT_HANDLER_DECLARATION,FOLLOW_EVENT_HANDLER_DECLARATION_in_eventHandlerDeclaration1482); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_modifier_in_eventHandlerDeclaration1484);
            modifier();

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

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_eventHandlerDeclaration1486); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:400:53: ( formalParameterDecls )?
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==PARAMETER) ) {
                alt43=1;
            }
            switch (alt43) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:400:53: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_eventHandlerDeclaration1489);
                    formalParameterDecls();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "eventHandlerImplementation"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:403:1: eventHandlerImplementation : ^( EVENT_HANDLER_IMPLEMENTATION qualifiedName ( formalParameterDecls )? ( whenEvent )* ) ;
    public final void eventHandlerImplementation() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:404:3: ( ^( EVENT_HANDLER_IMPLEMENTATION qualifiedName ( formalParameterDecls )? ( whenEvent )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:404:5: ^( EVENT_HANDLER_IMPLEMENTATION qualifiedName ( formalParameterDecls )? ( whenEvent )* )
            {
            match(input,EVENT_HANDLER_IMPLEMENTATION,FOLLOW_EVENT_HANDLER_IMPLEMENTATION_in_eventHandlerImplementation1505); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_qualifiedName_in_eventHandlerImplementation1507);
            qualifiedName();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:404:50: ( formalParameterDecls )?
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==PARAMETER) ) {
                alt44=1;
            }
            switch (alt44) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:404:50: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_eventHandlerImplementation1509);
                    formalParameterDecls();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:404:72: ( whenEvent )*
            loop45:
            do {
                int alt45=2;
                int LA45_0 = input.LA(1);

                if ( (LA45_0==WHEN_EVENT) ) {
                    alt45=1;
                }


                switch (alt45) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:404:72: whenEvent
                  {
                  pushFollow(FOLLOW_whenEvent_in_eventHandlerImplementation1512);
                  whenEvent();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "eventDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:407:1: eventDeclaration : ^( EVENT_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) ;
    public final void eventDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:408:2: ( ^( EVENT_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:408:4: ^( EVENT_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? )
            {
            match(input,EVENT_DECLARATION,FOLLOW_EVENT_DECLARATION_in_eventDeclaration1527); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_modifier_in_eventDeclaration1529);
            modifier();

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

            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_eventDeclaration1531); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:408:45: ( formalParameterDecls )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==PARAMETER) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:408:45: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_eventDeclaration1534);
                    formalParameterDecls();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "constantDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:411:1: constantDeclaration[boolean planConstant] returns [ToolConstant toolConst] : ^( CONSTANT ( modifier )? IDENTIFIER literal ) ;
    public final ToolConstant constantDeclaration(boolean planConstant) throws RecognitionException {
        ToolConstant toolConst = null;


        CommonTree IDENTIFIER30=null;
        ForteAST.literal_return literal31 =null;

        ForteAST.modifier_return modifier32 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:412:5: ( ^( CONSTANT ( modifier )? IDENTIFIER literal ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:412:7: ^( CONSTANT ( modifier )? IDENTIFIER literal )
            {
            match(input,CONSTANT,FOLLOW_CONSTANT_in_constantDeclaration1555); if (state.failed) return toolConst;

            match(input, Token.DOWN, null); if (state.failed) return toolConst;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:412:18: ( modifier )?
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==PRIVATE||LA47_0==PUBLIC||LA47_0==228||LA47_0==230) ) {
                alt47=1;
            }
            switch (alt47) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:412:18: modifier
                    {
                    pushFollow(FOLLOW_modifier_in_constantDeclaration1557);
                    modifier32=modifier();

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

                    }
                    break;

            }


            IDENTIFIER30=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_constantDeclaration1560); if (state.failed) return toolConst;

            pushFollow(FOLLOW_literal_in_constantDeclaration1562);
            literal31=literal();

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

            match(input, Token.UP, null); if (state.failed) return toolConst;


            if ( state.backtracking==0 ) {
                   toolConst = new ToolConstant(
                          (IDENTIFIER30!=null?IDENTIFIER30.getText():null)//Constant ID
                          (literal31!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(literal31.start),input.getTreeAdaptor().getTokenStopIndex(literal31.start))):null),    //Constant Value
                          (modifier32!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(modifier32.start),input.getTreeAdaptor().getTokenStopIndex(modifier32.start))):null),
                          planConstant); //Visibility
                  if (planConstant){
                      ((project_scope)project_stack.peek()).currentPlan.addConstant(toolConst);
                      toolConst.setParent(((project_scope)project_stack.peek()).currentPlan);
                  }
                  }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
          // do for sure before leaving
        }
        return toolConst;
    }
    // $ANTLR end "constantDeclaration"



    // $ANTLR start "restricted"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:429:1: restricted returns [boolean rest] : ^( PROP_RESTRICTED booleanLiteral ) ;
    public final boolean restricted() throws RecognitionException {
        boolean rest = false;


        ForteAST.booleanLiteral_return booleanLiteral33 =null;


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:430:2: ( ^( PROP_RESTRICTED booleanLiteral ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:430:4: ^( PROP_RESTRICTED booleanLiteral )
            {
            match(input,PROP_RESTRICTED,FOLLOW_PROP_RESTRICTED_in_restricted1594); if (state.failed) return rest;

            match(input, Token.DOWN, null); if (state.failed) return rest;
            pushFollow(FOLLOW_booleanLiteral_in_restricted1596);
            booleanLiteral33=booleanLiteral();

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

            match(input, Token.UP, null); if (state.failed) return rest;


            if ( state.backtracking==0 ) {
                rest = Boolean.parseBoolean((booleanLiteral33!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(booleanLiteral33.start),input.getTreeAdaptor().getTokenStopIndex(booleanLiteral33.start))):null));
                }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
          // do for sure before leaving
        }
        return rest;
    }
    // $ANTLR end "restricted"



    // $ANTLR start "file"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:439:1: file : IDENTIFIER ;
    public final void file() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:440:2: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:440:4: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_file1616); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "onOff"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:442:1: onOff : IDENTIFIER ;
    public final void onOff() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:443:2: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:443:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_onOff1627); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "superName"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:445:1: superName : IDENTIFIER ;
    public final void superName() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:446:2: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:446:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_superName1638); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "isDefault"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:448:1: isDefault : IDENTIFIER ;
    public final void isDefault() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:449:2: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:449:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_isDefault1649); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "classProperties"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:456:1: classProperties : ( ^( SHARED ( classPropertyDetail )+ ) | ^( TRANSACTIONAL ( classPropertyDetail )+ ) | ^( MONITORED ( classPropertyDetail )+ ) | restricted | ^( DISTRIBUTED ( classPropertyDetail )+ ) | ^( CLASSLINEAGE ( classLineageEntry )+ ) | property | extended_property | internal );
    public final void classProperties() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:457:2: ( ^( SHARED ( classPropertyDetail )+ ) | ^( TRANSACTIONAL ( classPropertyDetail )+ ) | ^( MONITORED ( classPropertyDetail )+ ) | restricted | ^( DISTRIBUTED ( classPropertyDetail )+ ) | ^( CLASSLINEAGE ( classLineageEntry )+ ) | property | extended_property | internal )
            int alt53=9;
            switch ( input.LA(1) ) {
            case SHARED:
                {
                alt53=1;
                }
                break;
            case TRANSACTIONAL:
                {
                alt53=2;
                }
                break;
            case MONITORED:
                {
                alt53=3;
                }
                break;
            case PROP_RESTRICTED:
                {
                alt53=4;
                }
                break;
            case DISTRIBUTED:
                {
                alt53=5;
                }
                break;
            case CLASSLINEAGE:
                {
                alt53=6;
                }
                break;
            case PROPERTY:
                {
                alt53=7;
                }
                break;
            case EXTENDED:
                {
                alt53=8;
                }
                break;
            case PROP_INTERNAL:
                {
                alt53=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 53, 0, input);

                throw nvae;

            }

            switch (alt53) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:457:4: ^( SHARED ( classPropertyDetail )+ )
                    {
                    match(input,SHARED,FOLLOW_SHARED_in_classProperties1666); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:457:13: ( classPropertyDetail )+
                    int cnt48=0;
                    loop48:
                    do {
                        int alt48=2;
                        int LA48_0 = input.LA(1);

                        if ( (LA48_0==ALLOW||LA48_0==DEFAULT||LA48_0==OVERRIDE) ) {
                            alt48=1;
                        }


                        switch (alt48) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:457:13: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1668);
                          classPropertyDetail();

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

                          }
                          break;

                      default :
                          if ( cnt48 >= 1 ) break loop48;
                          if (state.backtracking>0) {state.failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(48, input);
                                throw eee;
                        }
                        cnt48++;
                    } while (true);


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:458:4: ^( TRANSACTIONAL ( classPropertyDetail )+ )
                    {
                    match(input,TRANSACTIONAL,FOLLOW_TRANSACTIONAL_in_classProperties1676); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:458:20: ( classPropertyDetail )+
                    int cnt49=0;
                    loop49:
                    do {
                        int alt49=2;
                        int LA49_0 = input.LA(1);

                        if ( (LA49_0==ALLOW||LA49_0==DEFAULT||LA49_0==OVERRIDE) ) {
                            alt49=1;
                        }


                        switch (alt49) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:458:20: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1678);
                          classPropertyDetail();

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

                          }
                          break;

                      default :
                          if ( cnt49 >= 1 ) break loop49;
                          if (state.backtracking>0) {state.failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(49, input);
                                throw eee;
                        }
                        cnt49++;
                    } while (true);


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:459:4: ^( MONITORED ( classPropertyDetail )+ )
                    {
                    match(input,MONITORED,FOLLOW_MONITORED_in_classProperties1686); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:459:16: ( classPropertyDetail )+
                    int cnt50=0;
                    loop50:
                    do {
                        int alt50=2;
                        int LA50_0 = input.LA(1);

                        if ( (LA50_0==ALLOW||LA50_0==DEFAULT||LA50_0==OVERRIDE) ) {
                            alt50=1;
                        }


                        switch (alt50) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:459:16: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1688);
                          classPropertyDetail();

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

                          }
                          break;

                      default :
                          if ( cnt50 >= 1 ) break loop50;
                          if (state.backtracking>0) {state.failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(50, input);
                                throw eee;
                        }
                        cnt50++;
                    } while (true);


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:460:4: restricted
                    {
                    pushFollow(FOLLOW_restricted_in_classProperties1695);
                    restricted();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:461:4: ^( DISTRIBUTED ( classPropertyDetail )+ )
                    {
                    match(input,DISTRIBUTED,FOLLOW_DISTRIBUTED_in_classProperties1702); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:461:18: ( classPropertyDetail )+
                    int cnt51=0;
                    loop51:
                    do {
                        int alt51=2;
                        int LA51_0 = input.LA(1);

                        if ( (LA51_0==ALLOW||LA51_0==DEFAULT||LA51_0==OVERRIDE) ) {
                            alt51=1;
                        }


                        switch (alt51) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:461:18: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1704);
                          classPropertyDetail();

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

                          }
                          break;

                      default :
                          if ( cnt51 >= 1 ) break loop51;
                          if (state.backtracking>0) {state.failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(51, input);
                                throw eee;
                        }
                        cnt51++;
                    } while (true);


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:462:4: ^( CLASSLINEAGE ( classLineageEntry )+ )
                    {
                    match(input,CLASSLINEAGE,FOLLOW_CLASSLINEAGE_in_classProperties1712); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:462:19: ( classLineageEntry )+
                    int cnt52=0;
                    loop52:
                    do {
                        int alt52=2;
                        int LA52_0 = input.LA(1);

                        if ( (LA52_0==IDENTIFIER) ) {
                            alt52=1;
                        }


                        switch (alt52) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:462:19: classLineageEntry
                          {
                          pushFollow(FOLLOW_classLineageEntry_in_classProperties1714);
                          classLineageEntry();

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

                          }
                          break;

                      default :
                          if ( cnt52 >= 1 ) break loop52;
                          if (state.backtracking>0) {state.failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(52, input);
                                throw eee;
                        }
                        cnt52++;
                    } while (true);


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:463:4: property
                    {
                    pushFollow(FOLLOW_property_in_classProperties1721);
                    property();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:464:4: extended_property
                    {
                    pushFollow(FOLLOW_extended_property_in_classProperties1727);
                    extended_property();

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

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:465:4: internal
                    {
                    pushFollow(FOLLOW_internal_in_classProperties1733);
                    internal();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "classLineageEntry"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:468:1: classLineageEntry : ^( superName STRINGLITERAL ) ;
    public final void classLineageEntry() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:469:3: ( ^( superName STRINGLITERAL ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:469:5: ^( superName STRINGLITERAL )
            {
            pushFollow(FOLLOW_superName_in_classLineageEntry1750);
            superName();

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_classLineageEntry1752); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "classPropertyDetail"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:472:1: classPropertyDetail : ( ^( ALLOW onOff ) | ^( OVERRIDE onOff ) | ^( DEFAULT onOff ) );
    public final void classPropertyDetail() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:473:2: ( ^( ALLOW onOff ) | ^( OVERRIDE onOff ) | ^( DEFAULT onOff ) )
            int alt54=3;
            switch ( input.LA(1) ) {
            case ALLOW:
                {
                alt54=1;
                }
                break;
            case OVERRIDE:
                {
                alt54=2;
                }
                break;
            case DEFAULT:
                {
                alt54=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 54, 0, input);

                throw nvae;

            }

            switch (alt54) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:473:4: ^( ALLOW onOff )
                    {
                    match(input,ALLOW,FOLLOW_ALLOW_in_classPropertyDetail1768); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_onOff_in_classPropertyDetail1770);
                    onOff();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:474:4: ^( OVERRIDE onOff )
                    {
                    match(input,OVERRIDE,FOLLOW_OVERRIDE_in_classPropertyDetail1782); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_onOff_in_classPropertyDetail1784);
                    onOff();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:475:4: ^( DEFAULT onOff )
                    {
                    match(input,DEFAULT,FOLLOW_DEFAULT_in_classPropertyDetail1793); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_onOff_in_classPropertyDetail1795);
                    onOff();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "statement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:484:1: statement : ( expression | localVariableDeclaration | constantDeclaration[false] | exitStatment | continueStatment | postStatement | raiseStatement | returnStatement | whileDoStatement | forStatement | caseStatement | eventLoopStatement | eventCaseStatement | ifStatement | sqlStatement | block | startTask );
    public final void statement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:485:5: ( expression | localVariableDeclaration | constantDeclaration[false] | exitStatment | continueStatment | postStatement | raiseStatement | returnStatement | whileDoStatement | forStatement | caseStatement | eventLoopStatement | eventCaseStatement | ifStatement | sqlStatement | block | startTask )
            int alt55=17;
            switch ( input.LA(1) ) {
            case EXPR:
                {
                alt55=1;
                }
                break;
            case LOCAL_DECLARATION:
                {
                alt55=2;
                }
                break;
            case CONSTANT:
                {
                alt55=3;
                }
                break;
            case EXIT:
                {
                alt55=4;
                }
                break;
            case CONTINUE:
                {
                alt55=5;
                }
                break;
            case POST:
                {
                alt55=6;
                }
                break;
            case RAISE:
                {
                alt55=7;
                }
                break;
            case RETURN:
                {
                alt55=8;
                }
                break;
            case WHILE:
                {
                alt55=9;
                }
                break;
            case FOR_COUNT:
            case FOR_EACH:
            case FOR_SQL:
                {
                alt55=10;
                }
                break;
            case CASE:
                {
                alt55=11;
                }
                break;
            case EVENT_LOOP:
                {
                alt55=12;
                }
                break;
            case EVENT_CASE:
                {
                alt55=13;
                }
                break;
            case IF:
                {
                alt55=14;
                }
                break;
            case SQL:
            case SQL_DO:
                {
                alt55=15;
                }
                break;
            case BLOCK:
                {
                alt55=16;
                }
                break;
            case START_TASK:
                {
                alt55=17;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 55, 0, input);

                throw nvae;

            }

            switch (alt55) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:485:7: expression
                    {
                    pushFollow(FOLLOW_expression_in_statement1823);
                    expression();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:486:5: localVariableDeclaration
                    {
                    pushFollow(FOLLOW_localVariableDeclaration_in_statement1829);
                    localVariableDeclaration();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:487:5: constantDeclaration[false]
                    {
                    pushFollow(FOLLOW_constantDeclaration_in_statement1835);
                    constantDeclaration(false);

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:488:5: exitStatment
                    {
                    pushFollow(FOLLOW_exitStatment_in_statement1842);
                    exitStatment();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:489:5: continueStatment
                    {
                    pushFollow(FOLLOW_continueStatment_in_statement1848);
                    continueStatment();

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:490:5: postStatement
                    {
                    pushFollow(FOLLOW_postStatement_in_statement1854);
                    postStatement();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:491:5: raiseStatement
                    {
                    pushFollow(FOLLOW_raiseStatement_in_statement1860);
                    raiseStatement();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:492:5: returnStatement
                    {
                    pushFollow(FOLLOW_returnStatement_in_statement1866);
                    returnStatement();

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

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:493:5: whileDoStatement
                    {
                    pushFollow(FOLLOW_whileDoStatement_in_statement1872);
                    whileDoStatement();

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

                    }
                    break;
                case 10 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:494:5: forStatement
                    {
                    pushFollow(FOLLOW_forStatement_in_statement1878);
                    forStatement();

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

                    }
                    break;
                case 11 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:495:5: caseStatement
                    {
                    pushFollow(FOLLOW_caseStatement_in_statement1884);
                    caseStatement();

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

                    }
                    break;
                case 12 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:496:5: eventLoopStatement
                    {
                    pushFollow(FOLLOW_eventLoopStatement_in_statement1890);
                    eventLoopStatement();

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

                    }
                    break;
                case 13 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:497:7: eventCaseStatement
                    {
                    pushFollow(FOLLOW_eventCaseStatement_in_statement1898);
                    eventCaseStatement();

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

                    }
                    break;
                case 14 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:498:5: ifStatement
                    {
                    pushFollow(FOLLOW_ifStatement_in_statement1904);
                    ifStatement();

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

                    }
                    break;
                case 15 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:499:5: sqlStatement
                    {
                    pushFollow(FOLLOW_sqlStatement_in_statement1910);
                    sqlStatement();

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

                    }
                    break;
                case 16 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:500:5: block
                    {
                    pushFollow(FOLLOW_block_in_statement1916);
                    block();

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

                    }
                    break;
                case 17 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:502:5: startTask
                    {
                    pushFollow(FOLLOW_startTask_in_statement1923);
                    startTask();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sqlStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:505:1: sqlStatement : ( SQL | SQL_DO );
    public final void sqlStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:506:3: ( SQL | SQL_DO )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==SQL||input.LA(1)==SQL_DO ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "forStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:510:1: forStatement : ( ^( FOR_EACH name ^( IN expression ) ( statement )* ) | ^( FOR_COUNT name ^( IN expression ) ^( TO expression ) ^( BY expression ) ( statement )* ) | ^( FOR_SQL name type sql_select ( statement )* ) );
    public final void forStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:511:5: ( ^( FOR_EACH name ^( IN expression ) ( statement )* ) | ^( FOR_COUNT name ^( IN expression ) ^( TO expression ) ^( BY expression ) ( statement )* ) | ^( FOR_SQL name type sql_select ( statement )* ) )
            int alt59=3;
            switch ( input.LA(1) ) {
            case FOR_EACH:
                {
                alt59=1;
                }
                break;
            case FOR_COUNT:
                {
                alt59=2;
                }
                break;
            case FOR_SQL:
                {
                alt59=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 59, 0, input);

                throw nvae;

            }

            switch (alt59) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:511:9: ^( FOR_EACH name ^( IN expression ) ( statement )* )
                    {
                    match(input,FOR_EACH,FOLLOW_FOR_EACH_in_forStatement1967); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_name_in_forStatement1969);
                    name();

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

                    match(input,IN,FOLLOW_IN_in_forStatement1972); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expression_in_forStatement1974);
                    expression();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:511:42: ( statement )*
                    loop56:
                    do {
                        int alt56=2;
                        int LA56_0 = input.LA(1);

                        if ( (LA56_0==BLOCK||LA56_0==CASE||(LA56_0 >= CONSTANT && LA56_0 <= CONTINUE)||LA56_0==EVENT_CASE||LA56_0==EVENT_LOOP||(LA56_0 >= EXIT && LA56_0 <= EXPR)||(LA56_0 >= FOR_COUNT && LA56_0 <= FOR_SQL)||LA56_0==IF||LA56_0==LOCAL_DECLARATION||LA56_0==POST||LA56_0==RAISE||LA56_0==RETURN||LA56_0==SQL||LA56_0==START_TASK||LA56_0==WHILE||LA56_0==SQL_DO) ) {
                            alt56=1;
                        }


                        switch (alt56) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:511:42: statement
                          {
                          pushFollow(FOLLOW_statement_in_forStatement1977);
                          statement();

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

                          }
                          break;

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


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:512:8: ^( FOR_COUNT name ^( IN expression ) ^( TO expression ) ^( BY expression ) ( statement )* )
                    {
                    match(input,FOR_COUNT,FOLLOW_FOR_COUNT_in_forStatement1989); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_name_in_forStatement1991);
                    name();

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

                    match(input,IN,FOLLOW_IN_in_forStatement1994); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expression_in_forStatement1996);
                    expression();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    match(input,TO,FOLLOW_TO_in_forStatement2000); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expression_in_forStatement2002);
                    expression();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    match(input,BY,FOLLOW_BY_in_forStatement2006); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expression_in_forStatement2008);
                    expression();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:512:76: ( statement )*
                    loop57:
                    do {
                        int alt57=2;
                        int LA57_0 = input.LA(1);

                        if ( (LA57_0==BLOCK||LA57_0==CASE||(LA57_0 >= CONSTANT && LA57_0 <= CONTINUE)||LA57_0==EVENT_CASE||LA57_0==EVENT_LOOP||(LA57_0 >= EXIT && LA57_0 <= EXPR)||(LA57_0 >= FOR_COUNT && LA57_0 <= FOR_SQL)||LA57_0==IF||LA57_0==LOCAL_DECLARATION||LA57_0==POST||LA57_0==RAISE||LA57_0==RETURN||LA57_0==SQL||LA57_0==START_TASK||LA57_0==WHILE||LA57_0==SQL_DO) ) {
                            alt57=1;
                        }


                        switch (alt57) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:512:76: statement
                          {
                          pushFollow(FOLLOW_statement_in_forStatement2011);
                          statement();

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

                          }
                          break;

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


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:513:9: ^( FOR_SQL name type sql_select ( statement )* )
                    {
                    match(input,FOR_SQL,FOLLOW_FOR_SQL_in_forStatement2024); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_name_in_forStatement2026);
                    name();

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

                    pushFollow(FOLLOW_type_in_forStatement2028);
                    type();

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

                    pushFollow(FOLLOW_sql_select_in_forStatement2030);
                    sql_select();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:513:40: ( statement )*
                    loop58:
                    do {
                        int alt58=2;
                        int LA58_0 = input.LA(1);

                        if ( (LA58_0==BLOCK||LA58_0==CASE||(LA58_0 >= CONSTANT && LA58_0 <= CONTINUE)||LA58_0==EVENT_CASE||LA58_0==EVENT_LOOP||(LA58_0 >= EXIT && LA58_0 <= EXPR)||(LA58_0 >= FOR_COUNT && LA58_0 <= FOR_SQL)||LA58_0==IF||LA58_0==LOCAL_DECLARATION||LA58_0==POST||LA58_0==RAISE||LA58_0==RETURN||LA58_0==SQL||LA58_0==START_TASK||LA58_0==WHILE||LA58_0==SQL_DO) ) {
                            alt58=1;
                        }


                        switch (alt58) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:513:40: statement
                          {
                          pushFollow(FOLLOW_statement_in_forStatement2032);
                          statement();

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

                          }
                          break;

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


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "exitStatment"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:516:1: exitStatment : ^( EXIT ( label )? ) ;
    public final void exitStatment() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:517:2: ( ^( EXIT ( label )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:517:4: ^( EXIT ( label )? )
            {
            match(input,EXIT,FOLLOW_EXIT_in_exitStatment2053); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:517:11: ( label )?
                int alt60=2;
                int LA60_0 = input.LA(1);

                if ( (LA60_0==LABEL) ) {
                    alt60=1;
                }
                switch (alt60) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:517:11: label
                        {
                        pushFollow(FOLLOW_label_in_exitStatment2055);
                        label();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "continueStatment"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:519:1: continueStatment : ^( CONTINUE ( label )? ) ;
    public final void continueStatment() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:520:2: ( ^( CONTINUE ( label )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:520:4: ^( CONTINUE ( label )? )
            {
            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatment2068); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:520:15: ( label )?
                int alt61=2;
                int LA61_0 = input.LA(1);

                if ( (LA61_0==LABEL) ) {
                    alt61=1;
                }
                switch (alt61) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:520:15: label
                        {
                        pushFollow(FOLLOW_label_in_continueStatment2070);
                        label();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "returnStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:522:1: returnStatement : ^( RETURN ( expression )? ) ;
    public final void returnStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:523:2: ( ^( RETURN ( expression )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:523:4: ^( RETURN ( expression )? )
            {
            match(input,RETURN,FOLLOW_RETURN_in_returnStatement2083); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:523:13: ( expression )?
                int alt62=2;
                int LA62_0 = input.LA(1);

                if ( (LA62_0==EXPR) ) {
                    alt62=1;
                }
                switch (alt62) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:523:13: expression
                        {
                        pushFollow(FOLLOW_expression_in_returnStatement2085);
                        expression();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "caseStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:525:1: caseStatement : ^( CASE expression ( whenCase )* ( elseDO )? ) ;
    public final void caseStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:526:2: ( ^( CASE expression ( whenCase )* ( elseDO )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:526:4: ^( CASE expression ( whenCase )* ( elseDO )? )
            {
            match(input,CASE,FOLLOW_CASE_in_caseStatement2098); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_caseStatement2100);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:526:22: ( whenCase )*
            loop63:
            do {
                int alt63=2;
                int LA63_0 = input.LA(1);

                if ( (LA63_0==WHEN_CASE) ) {
                    alt63=1;
                }


                switch (alt63) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:526:22: whenCase
                  {
                  pushFollow(FOLLOW_whenCase_in_caseStatement2102);
                  whenCase();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:526:32: ( elseDO )?
            int alt64=2;
            int LA64_0 = input.LA(1);

            if ( (LA64_0==ELSE) ) {
                alt64=1;
            }
            switch (alt64) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:526:32: elseDO
                    {
                    pushFollow(FOLLOW_elseDO_in_caseStatement2105);
                    elseDO();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "whileDoStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:529:1: whileDoStatement : ^( WHILE expression ( statement )* ) ;
    public final void whileDoStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:530:2: ( ^( WHILE expression ( statement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:530:4: ^( WHILE expression ( statement )* )
            {
            match(input,WHILE,FOLLOW_WHILE_in_whileDoStatement2119); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_whileDoStatement2122);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:530:25: ( statement )*
            loop65:
            do {
                int alt65=2;
                int LA65_0 = input.LA(1);

                if ( (LA65_0==BLOCK||LA65_0==CASE||(LA65_0 >= CONSTANT && LA65_0 <= CONTINUE)||LA65_0==EVENT_CASE||LA65_0==EVENT_LOOP||(LA65_0 >= EXIT && LA65_0 <= EXPR)||(LA65_0 >= FOR_COUNT && LA65_0 <= FOR_SQL)||LA65_0==IF||LA65_0==LOCAL_DECLARATION||LA65_0==POST||LA65_0==RAISE||LA65_0==RETURN||LA65_0==SQL||LA65_0==START_TASK||LA65_0==WHILE||LA65_0==SQL_DO) ) {
                    alt65=1;
                }


                switch (alt65) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:530:25: statement
                  {
                  pushFollow(FOLLOW_statement_in_whileDoStatement2125);
                  statement();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "ifStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:533:1: ifStatement : ^( IF expression ( statement )* ( elseIf )* ( elseDO )? ) ;
    public final void ifStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:2: ( ^( IF expression ( statement )* ( elseIf )* ( elseDO )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:4: ^( IF expression ( statement )* ( elseIf )* ( elseDO )? )
            {
            match(input,IF,FOLLOW_IF_in_ifStatement2140); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_ifStatement2142);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:20: ( statement )*
            loop66:
            do {
                int alt66=2;
                int LA66_0 = input.LA(1);

                if ( (LA66_0==BLOCK||LA66_0==CASE||(LA66_0 >= CONSTANT && LA66_0 <= CONTINUE)||LA66_0==EVENT_CASE||LA66_0==EVENT_LOOP||(LA66_0 >= EXIT && LA66_0 <= EXPR)||(LA66_0 >= FOR_COUNT && LA66_0 <= FOR_SQL)||LA66_0==IF||LA66_0==LOCAL_DECLARATION||LA66_0==POST||LA66_0==RAISE||LA66_0==RETURN||LA66_0==SQL||LA66_0==START_TASK||LA66_0==WHILE||LA66_0==SQL_DO) ) {
                    alt66=1;
                }


                switch (alt66) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:20: statement
                  {
                  pushFollow(FOLLOW_statement_in_ifStatement2144);
                  statement();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:31: ( elseIf )*
            loop67:
            do {
                int alt67=2;
                int LA67_0 = input.LA(1);

                if ( (LA67_0==ELSEIF) ) {
                    alt67=1;
                }


                switch (alt67) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:31: elseIf
                  {
                  pushFollow(FOLLOW_elseIf_in_ifStatement2147);
                  elseIf();

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

                  }
                  break;

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


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:39: ( elseDO )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==ELSE) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:534:39: elseDO
                    {
                    pushFollow(FOLLOW_elseDO_in_ifStatement2150);
                    elseDO();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "elseIf"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:537:1: elseIf : ^( ELSEIF expression ( statement )* ) ;
    public final void elseIf() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:538:2: ( ^( ELSEIF expression ( statement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:538:4: ^( ELSEIF expression ( statement )* )
            {
            match(input,ELSEIF,FOLLOW_ELSEIF_in_elseIf2164); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_elseIf2166);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:538:24: ( statement )*
            loop69:
            do {
                int alt69=2;
                int LA69_0 = input.LA(1);

                if ( (LA69_0==BLOCK||LA69_0==CASE||(LA69_0 >= CONSTANT && LA69_0 <= CONTINUE)||LA69_0==EVENT_CASE||LA69_0==EVENT_LOOP||(LA69_0 >= EXIT && LA69_0 <= EXPR)||(LA69_0 >= FOR_COUNT && LA69_0 <= FOR_SQL)||LA69_0==IF||LA69_0==LOCAL_DECLARATION||LA69_0==POST||LA69_0==RAISE||LA69_0==RETURN||LA69_0==SQL||LA69_0==START_TASK||LA69_0==WHILE||LA69_0==SQL_DO) ) {
                    alt69=1;
                }


                switch (alt69) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:538:24: statement
                  {
                  pushFollow(FOLLOW_statement_in_elseIf2168);
                  statement();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "raiseStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:542:1: raiseStatement : ^( RAISE ( expression )? ) ;
    public final void raiseStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:543:2: ( ^( RAISE ( expression )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:543:4: ^( RAISE ( expression )? )
            {
            match(input,RAISE,FOLLOW_RAISE_in_raiseStatement2183); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:543:12: ( expression )?
                int alt70=2;
                int LA70_0 = input.LA(1);

                if ( (LA70_0==EXPR) ) {
                    alt70=1;
                }
                switch (alt70) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:543:12: expression
                        {
                        pushFollow(FOLLOW_expression_in_raiseStatement2185);
                        expression();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "postStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:546:1: postStatement : ^( POST expression ) ;
    public final void postStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:547:2: ( ^( POST expression ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:547:4: ^( POST expression )
            {
            match(input,POST,FOLLOW_POST_in_postStatement2199); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_postStatement2201);
            expression();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "eventLoopStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:549:1: eventLoopStatement : ^( EVENT_LOOP ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) ;
    public final void eventLoopStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:2: ( ^( EVENT_LOOP ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:4: ^( EVENT_LOOP ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? )
            {
            match(input,EVENT_LOOP,FOLLOW_EVENT_LOOP_in_eventLoopStatement2213); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:17: ( preregisterStatement )?
                int alt71=2;
                int LA71_0 = input.LA(1);

                if ( (LA71_0==PREREGISTER) ) {
                    alt71=1;
                }
                switch (alt71) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:17: preregisterStatement
                        {
                        pushFollow(FOLLOW_preregisterStatement_in_eventLoopStatement2215);
                        preregisterStatement();

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

                        }
                        break;

                }


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:39: ( postregisterStatement )?
                int alt72=2;
                int LA72_0 = input.LA(1);

                if ( (LA72_0==POSTREGISTER) ) {
                    alt72=1;
                }
                switch (alt72) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:39: postregisterStatement
                        {
                        pushFollow(FOLLOW_postregisterStatement_in_eventLoopStatement2218);
                        postregisterStatement();

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

                        }
                        break;

                }


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:62: ( whenEvent )*
                loop73:
                do {
                    int alt73=2;
                    int LA73_0 = input.LA(1);

                    if ( (LA73_0==WHEN_EVENT) ) {
                        alt73=1;
                    }


                    switch (alt73) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:62: whenEvent
                      {
                      pushFollow(FOLLOW_whenEvent_in_eventLoopStatement2221);
                      whenEvent();

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

                      }
                      break;

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


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:73: ( label )?
                int alt74=2;
                int LA74_0 = input.LA(1);

                if ( (LA74_0==LABEL) ) {
                    alt74=1;
                }
                switch (alt74) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:550:73: label
                        {
                        pushFollow(FOLLOW_label_in_eventLoopStatement2224);
                        label();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "eventCaseStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:553:1: eventCaseStatement : ^( EVENT_CASE ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) ;
    public final void eventCaseStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:3: ( ^( EVENT_CASE ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:5: ^( EVENT_CASE ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? )
            {
            match(input,EVENT_CASE,FOLLOW_EVENT_CASE_in_eventCaseStatement2239); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:18: ( preregisterStatement )?
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( (LA75_0==PREREGISTER) ) {
                    alt75=1;
                }
                switch (alt75) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:18: preregisterStatement
                        {
                        pushFollow(FOLLOW_preregisterStatement_in_eventCaseStatement2241);
                        preregisterStatement();

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

                        }
                        break;

                }


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:40: ( postregisterStatement )?
                int alt76=2;
                int LA76_0 = input.LA(1);

                if ( (LA76_0==POSTREGISTER) ) {
                    alt76=1;
                }
                switch (alt76) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:40: postregisterStatement
                        {
                        pushFollow(FOLLOW_postregisterStatement_in_eventCaseStatement2244);
                        postregisterStatement();

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

                        }
                        break;

                }


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:63: ( whenEvent )*
                loop77:
                do {
                    int alt77=2;
                    int LA77_0 = input.LA(1);

                    if ( (LA77_0==WHEN_EVENT) ) {
                        alt77=1;
                    }


                    switch (alt77) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:63: whenEvent
                      {
                      pushFollow(FOLLOW_whenEvent_in_eventCaseStatement2247);
                      whenEvent();

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

                      }
                      break;

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


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:74: ( label )?
                int alt78=2;
                int LA78_0 = input.LA(1);

                if ( (LA78_0==LABEL) ) {
                    alt78=1;
                }
                switch (alt78) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:554:74: label
                        {
                        pushFollow(FOLLOW_label_in_eventCaseStatement2250);
                        label();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "preregisterStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:557:1: preregisterStatement : ^( PREREGISTER ( registerStatement )* ) ;
    public final void preregisterStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:558:2: ( ^( PREREGISTER ( registerStatement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:558:4: ^( PREREGISTER ( registerStatement )* )
            {
            match(input,PREREGISTER,FOLLOW_PREREGISTER_in_preregisterStatement2265); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:558:18: ( registerStatement )*
                loop79:
                do {
                    int alt79=2;
                    int LA79_0 = input.LA(1);

                    if ( (LA79_0==REGISTER) ) {
                        alt79=1;
                    }


                    switch (alt79) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:558:18: registerStatement
                      {
                      pushFollow(FOLLOW_registerStatement_in_preregisterStatement2267);
                      registerStatement();

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

                      }
                      break;

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


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "postregisterStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:561:1: postregisterStatement : ^( POSTREGISTER ( registerStatement )* ) ;
    public final void postregisterStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:562:2: ( ^( POSTREGISTER ( registerStatement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:562:4: ^( POSTREGISTER ( registerStatement )* )
            {
            match(input,POSTREGISTER,FOLLOW_POSTREGISTER_in_postregisterStatement2281); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:562:19: ( registerStatement )*
                loop80:
                do {
                    int alt80=2;
                    int LA80_0 = input.LA(1);

                    if ( (LA80_0==REGISTER) ) {
                        alt80=1;
                    }


                    switch (alt80) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:562:19: registerStatement
                      {
                      pushFollow(FOLLOW_registerStatement_in_postregisterStatement2283);
                      registerStatement();

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

                      }
                      break;

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


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "registerStatement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:566:1: registerStatement : ^( REGISTER IDENTIFIER ( arguments )? ) ;
    public final void registerStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:567:2: ( ^( REGISTER IDENTIFIER ( arguments )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:567:4: ^( REGISTER IDENTIFIER ( arguments )? )
            {
            match(input,REGISTER,FOLLOW_REGISTER_in_registerStatement2298); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_registerStatement2300); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:567:26: ( arguments )?
            int alt81=2;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==ARGUMENT_LIST) ) {
                alt81=1;
            }
            switch (alt81) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:567:26: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_registerStatement2302);
                    arguments();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "startTask"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:571:1: startTask : ^( START_TASK expression ( completion )? ) ;
    public final void startTask() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:572:3: ( ^( START_TASK expression ( completion )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:572:5: ^( START_TASK expression ( completion )? )
            {
            match(input,START_TASK,FOLLOW_START_TASK_in_startTask2318); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_startTask2320);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:572:30: ( completion )?
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( (LA82_0==COMPLETION) ) {
                alt82=1;
            }
            switch (alt82) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:572:30: completion
                    {
                    pushFollow(FOLLOW_completion_in_startTask2323);
                    completion();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "completion"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:575:1: completion : ^( COMPLETION ( EVENT | 'ignore' ) ) ( ^( TRANSACTION transType ) )? ;
    public final void completion() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:576:2: ( ^( COMPLETION ( EVENT | 'ignore' ) ) ( ^( TRANSACTION transType ) )? )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:576:4: ^( COMPLETION ( EVENT | 'ignore' ) ) ( ^( TRANSACTION transType ) )?
            {
            match(input,COMPLETION,FOLLOW_COMPLETION_in_completion2340); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            if ( input.LA(1)==EVENT||input.LA(1)==235 ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            match(input, Token.UP, null); if (state.failed) return ;


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:577:5: ( ^( TRANSACTION transType ) )?
            int alt83=2;
            int LA83_0 = input.LA(1);

            if ( (LA83_0==TRANSACTION) ) {
                alt83=1;
            }
            switch (alt83) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:577:6: ^( TRANSACTION transType )
                    {
                    match(input,TRANSACTION,FOLLOW_TRANSACTION_in_completion2358); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_transType_in_completion2360);
                    transType();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "whenException"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:581:1: whenException : ^( WHEN_EXCEPTION IDENTIFIER type ( statement )* ) ;
    public final void whenException() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:582:2: ( ^( WHEN_EXCEPTION IDENTIFIER type ( statement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:582:4: ^( WHEN_EXCEPTION IDENTIFIER type ( statement )* )
            {
            match(input,WHEN_EXCEPTION,FOLLOW_WHEN_EXCEPTION_in_whenException2379); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_whenException2381); if (state.failed) return ;

            pushFollow(FOLLOW_type_in_whenException2383);
            type();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:582:37: ( statement )*
            loop84:
            do {
                int alt84=2;
                int LA84_0 = input.LA(1);

                if ( (LA84_0==BLOCK||LA84_0==CASE||(LA84_0 >= CONSTANT && LA84_0 <= CONTINUE)||LA84_0==EVENT_CASE||LA84_0==EVENT_LOOP||(LA84_0 >= EXIT && LA84_0 <= EXPR)||(LA84_0 >= FOR_COUNT && LA84_0 <= FOR_SQL)||LA84_0==IF||LA84_0==LOCAL_DECLARATION||LA84_0==POST||LA84_0==RAISE||LA84_0==RETURN||LA84_0==SQL||LA84_0==START_TASK||LA84_0==WHILE||LA84_0==SQL_DO) ) {
                    alt84=1;
                }


                switch (alt84) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:582:37: statement
                  {
                  pushFollow(FOLLOW_statement_in_whenException2385);
                  statement();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "whenCase"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:585:1: whenCase : ^( WHEN_CASE expression ( statement )* ) ;
    public final void whenCase() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:586:2: ( ^( WHEN_CASE expression ( statement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:586:4: ^( WHEN_CASE expression ( statement )* )
            {
            match(input,WHEN_CASE,FOLLOW_WHEN_CASE_in_whenCase2399); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_whenCase2401);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:586:27: ( statement )*
            loop85:
            do {
                int alt85=2;
                int LA85_0 = input.LA(1);

                if ( (LA85_0==BLOCK||LA85_0==CASE||(LA85_0 >= CONSTANT && LA85_0 <= CONTINUE)||LA85_0==EVENT_CASE||LA85_0==EVENT_LOOP||(LA85_0 >= EXIT && LA85_0 <= EXPR)||(LA85_0 >= FOR_COUNT && LA85_0 <= FOR_SQL)||LA85_0==IF||LA85_0==LOCAL_DECLARATION||LA85_0==POST||LA85_0==RAISE||LA85_0==RETURN||LA85_0==SQL||LA85_0==START_TASK||LA85_0==WHILE||LA85_0==SQL_DO) ) {
                    alt85=1;
                }


                switch (alt85) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:586:27: statement
                  {
                  pushFollow(FOLLOW_statement_in_whenCase2403);
                  statement();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "whenEvent"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:589:1: whenEvent : ^( WHEN_EVENT expression ( eventArguments )? ( statement )* ) ;
    public final void whenEvent() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:590:3: ( ^( WHEN_EVENT expression ( eventArguments )? ( statement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:590:5: ^( WHEN_EVENT expression ( eventArguments )? ( statement )* )
            {
            match(input,WHEN_EVENT,FOLLOW_WHEN_EVENT_in_whenEvent2419); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_whenEvent2421);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:590:29: ( eventArguments )?
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==ARGUMENT_LIST_EVENT) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:590:29: eventArguments
                    {
                    pushFollow(FOLLOW_eventArguments_in_whenEvent2423);
                    eventArguments();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:590:45: ( statement )*
            loop87:
            do {
                int alt87=2;
                int LA87_0 = input.LA(1);

                if ( (LA87_0==BLOCK||LA87_0==CASE||(LA87_0 >= CONSTANT && LA87_0 <= CONTINUE)||LA87_0==EVENT_CASE||LA87_0==EVENT_LOOP||(LA87_0 >= EXIT && LA87_0 <= EXPR)||(LA87_0 >= FOR_COUNT && LA87_0 <= FOR_SQL)||LA87_0==IF||LA87_0==LOCAL_DECLARATION||LA87_0==POST||LA87_0==RAISE||LA87_0==RETURN||LA87_0==SQL||LA87_0==START_TASK||LA87_0==WHILE||LA87_0==SQL_DO) ) {
                    alt87=1;
                }


                switch (alt87) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:590:45: statement
                  {
                  pushFollow(FOLLOW_statement_in_whenEvent2426);
                  statement();

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

                  }
                  break;

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


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "exceptionBlock"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:593:1: exceptionBlock : ^( EXCEPTION ( whenException )* ( elseDO )? ) ;
    public final void exceptionBlock() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:594:2: ( ^( EXCEPTION ( whenException )* ( elseDO )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:594:4: ^( EXCEPTION ( whenException )* ( elseDO )? )
            {
            match(input,EXCEPTION,FOLLOW_EXCEPTION_in_exceptionBlock2442); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:594:16: ( whenException )*
                loop88:
                do {
                    int alt88=2;
                    int LA88_0 = input.LA(1);

                    if ( (LA88_0==WHEN_EXCEPTION) ) {
                        alt88=1;
                    }


                    switch (alt88) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:594:16: whenException
                      {
                      pushFollow(FOLLOW_whenException_in_exceptionBlock2444);
                      whenException();

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

                      }
                      break;

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


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:594:31: ( elseDO )?
                int alt89=2;
                int LA89_0 = input.LA(1);

                if ( (LA89_0==ELSE) ) {
                    alt89=1;
                }
                switch (alt89) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:594:31: elseDO
                        {
                        pushFollow(FOLLOW_elseDO_in_exceptionBlock2447);
                        elseDO();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "elseDO"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:598:1: elseDO : ^( ELSE ( statement )* ) ;
    public final void elseDO() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:599:3: ( ^( ELSE ( statement )* ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:599:5: ^( ELSE ( statement )* )
            {
            match(input,ELSE,FOLLOW_ELSE_in_elseDO2468); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:599:12: ( statement )*
                loop90:
                do {
                    int alt90=2;
                    int LA90_0 = input.LA(1);

                    if ( (LA90_0==BLOCK||LA90_0==CASE||(LA90_0 >= CONSTANT && LA90_0 <= CONTINUE)||LA90_0==EVENT_CASE||LA90_0==EVENT_LOOP||(LA90_0 >= EXIT && LA90_0 <= EXPR)||(LA90_0 >= FOR_COUNT && LA90_0 <= FOR_SQL)||LA90_0==IF||LA90_0==LOCAL_DECLARATION||LA90_0==POST||LA90_0==RAISE||LA90_0==RETURN||LA90_0==SQL||LA90_0==START_TASK||LA90_0==WHILE||LA90_0==SQL_DO) ) {
                        alt90=1;
                    }


                    switch (alt90) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:599:12: statement
                      {
                      pushFollow(FOLLOW_statement_in_elseDO2470);
                      statement();

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

                      }
                      break;

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


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "methodReturnDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:602:1: methodReturnDeclaration : ^( RETURN type ( COPY )? ) ;
    public final void methodReturnDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:603:2: ( ^( RETURN type ( COPY )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:603:5: ^( RETURN type ( COPY )? )
            {
            match(input,RETURN,FOLLOW_RETURN_in_methodReturnDeclaration2486); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_methodReturnDeclaration2488);
            type();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:603:19: ( COPY )?
            int alt91=2;
            int LA91_0 = input.LA(1);

            if ( (LA91_0==COPY) ) {
                alt91=1;
            }
            switch (alt91) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:603:19: COPY
                    {
                    match(input,COPY,FOLLOW_COPY_in_methodReturnDeclaration2490); if (state.failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "formalParameterDecls"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:607:1: formalParameterDecls : ( normalParameterDecl )+ ;
    public final void formalParameterDecls() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:608:5: ( ( normalParameterDecl )+ )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:608:9: ( normalParameterDecl )+
            {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:608:9: ( normalParameterDecl )+
            int cnt92=0;
            loop92:
            do {
                int alt92=2;
                int LA92_0 = input.LA(1);

                if ( (LA92_0==PARAMETER) ) {
                    alt92=1;
                }


                switch (alt92) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:608:9: normalParameterDecl
                  {
                  pushFollow(FOLLOW_normalParameterDecl_in_formalParameterDecls2511);
                  normalParameterDecl();

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

                  }
                  break;

              default :
                  if ( cnt92 >= 1 ) break loop92;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(92, input);
                        throw eee;
                }
                cnt92++;
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "normalParameterDecl"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:611:1: normalParameterDecl : ^( PARAMETER paramName type paramModifiers ( expression )? ) ;
    public final void normalParameterDecl() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:612:5: ( ^( PARAMETER paramName type paramModifiers ( expression )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:612:10: ^( PARAMETER paramName type paramModifiers ( expression )? )
            {
            match(input,PARAMETER,FOLLOW_PARAMETER_in_normalParameterDecl2534); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_paramName_in_normalParameterDecl2536);
            paramName();

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

            pushFollow(FOLLOW_type_in_normalParameterDecl2538);
            type();

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

            pushFollow(FOLLOW_paramModifiers_in_normalParameterDecl2540);
            paramModifiers();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:612:52: ( expression )?
            int alt93=2;
            int LA93_0 = input.LA(1);

            if ( (LA93_0==EXPR) ) {
                alt93=1;
            }
            switch (alt93) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:612:52: expression
                    {
                    pushFollow(FOLLOW_expression_in_normalParameterDecl2542);
                    expression();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "paramName"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:615:1: paramName : name ;
    public final void paramName() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:616:3: ( name )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:616:5: name
            {
            pushFollow(FOLLOW_name_in_paramName2559);
            name();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "paramModifiers"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:621:1: paramModifiers : ( COPY )? ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER ) ;
    public final void paramModifiers() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:622:5: ( ( COPY )? ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:622:7: ( COPY )? ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER )
            {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:622:7: ( COPY )?
            int alt94=2;
            int LA94_0 = input.LA(1);

            if ( (LA94_0==COPY) ) {
                alt94=1;
            }
            switch (alt94) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:622:7: COPY
                    {
                    match(input,COPY,FOLLOW_COPY_in_paramModifiers2577); if (state.failed) return ;

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:623:5: ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER )
            int alt95=4;
            switch ( input.LA(1) ) {
            case INPUT:
                {
                int LA95_1 = input.LA(2);

                if ( (LA95_1==OUTPUT) ) {
                    alt95=1;
                }
                else if ( (LA95_1==UP||LA95_1==EXPR) ) {
                    alt95=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 95, 1, input);

                    throw nvae;

                }
                }
                break;
            case OUTPUT:
                {
                alt95=3;
                }
                break;
            case IDENTIFIER:
                {
                alt95=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 95, 0, input);

                throw nvae;

            }

            switch (alt95) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:623:6: INPUT OUTPUT
                    {
                    match(input,INPUT,FOLLOW_INPUT_in_paramModifiers2587); if (state.failed) return ;

                    match(input,OUTPUT,FOLLOW_OUTPUT_in_paramModifiers2589); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:624:9: INPUT
                    {
                    match(input,INPUT,FOLLOW_INPUT_in_paramModifiers2599); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:625:9: OUTPUT
                    {
                    match(input,OUTPUT,FOLLOW_OUTPUT_in_paramModifiers2610); if (state.failed) return ;

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:626:9: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_paramModifiers2620); if (state.failed) return ;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "localVariableDeclaration"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:630:1: localVariableDeclaration : ^( LOCAL_DECLARATION ( IDENTIFIER )+ type ( expression )? ) ;
    public final void localVariableDeclaration() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:631:5: ( ^( LOCAL_DECLARATION ( IDENTIFIER )+ type ( expression )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:631:8: ^( LOCAL_DECLARATION ( IDENTIFIER )+ type ( expression )? )
            {
            match(input,LOCAL_DECLARATION,FOLLOW_LOCAL_DECLARATION_in_localVariableDeclaration2643); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:631:28: ( IDENTIFIER )+
            int cnt96=0;
            loop96:
            do {
                int alt96=2;
                int LA96_0 = input.LA(1);

                if ( (LA96_0==IDENTIFIER) ) {
                    int LA96_1 = input.LA(2);

                    if ( (LA96_1==ARRAY_TYPE||LA96_1==IDENTIFIER||LA96_1==POINTER_TYPE||LA96_1==222) ) {
                        alt96=1;
                    }


                }


                switch (alt96) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:631:28: IDENTIFIER
                  {
                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_localVariableDeclaration2645); if (state.failed) return ;

                  }
                  break;

              default :
                  if ( cnt96 >= 1 ) break loop96;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(96, input);
                        throw eee;
                }
                cnt96++;
            } while (true);


            pushFollow(FOLLOW_type_in_localVariableDeclaration2648);
            type();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:631:45: ( expression )?
            int alt97=2;
            int LA97_0 = input.LA(1);

            if ( (LA97_0==EXPR) ) {
                alt97=1;
            }
            switch (alt97) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:631:45: expression
                    {
                    pushFollow(FOLLOW_expression_in_localVariableDeclaration2650);
                    expression();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "label"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:635:1: label : ^( LABEL IDENTIFIER ) ;
    public final void label() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:636:3: ( ^( LABEL IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:636:5: ^( LABEL IDENTIFIER )
            {
            match(input,LABEL,FOLLOW_LABEL_in_label2669); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_label2671); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "block"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:644:1: block : ^( BLOCK ( transaction )? ( statement )* ( exceptionBlock )? ) ;
    public final void block() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:645:2: ( ^( BLOCK ( transaction )? ( statement )* ( exceptionBlock )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:645:4: ^( BLOCK ( transaction )? ( statement )* ( exceptionBlock )? )
            {
            match(input,BLOCK,FOLLOW_BLOCK_in_block2691); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:645:12: ( transaction )?
                int alt98=2;
                int LA98_0 = input.LA(1);

                if ( (LA98_0==TRANSACTION) ) {
                    alt98=1;
                }
                switch (alt98) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:645:12: transaction
                        {
                        pushFollow(FOLLOW_transaction_in_block2693);
                        transaction();

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

                        }
                        break;

                }


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:646:3: ( statement )*
                loop99:
                do {
                    int alt99=2;
                    int LA99_0 = input.LA(1);

                    if ( (LA99_0==BLOCK||LA99_0==CASE||(LA99_0 >= CONSTANT && LA99_0 <= CONTINUE)||LA99_0==EVENT_CASE||LA99_0==EVENT_LOOP||(LA99_0 >= EXIT && LA99_0 <= EXPR)||(LA99_0 >= FOR_COUNT && LA99_0 <= FOR_SQL)||LA99_0==IF||LA99_0==LOCAL_DECLARATION||LA99_0==POST||LA99_0==RAISE||LA99_0==RETURN||LA99_0==SQL||LA99_0==START_TASK||LA99_0==WHILE||LA99_0==SQL_DO) ) {
                        alt99=1;
                    }


                    switch (alt99) {
                  case 1 :
                      // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:646:3: statement
                      {
                      pushFollow(FOLLOW_statement_in_block2698);
                      statement();

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

                      }
                      break;

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


                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:647:3: ( exceptionBlock )?
                int alt100=2;
                int LA100_0 = input.LA(1);

                if ( (LA100_0==EXCEPTION) ) {
                    alt100=1;
                }
                switch (alt100) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:647:3: exceptionBlock
                        {
                        pushFollow(FOLLOW_exceptionBlock_in_block2703);
                        exceptionBlock();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "transaction"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:649:1: transaction : ^( TRANSACTION ( transType )? ) ;
    public final void transaction() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:650:2: ( ^( TRANSACTION ( transType )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:650:4: ^( TRANSACTION ( transType )? )
            {
            match(input,TRANSACTION,FOLLOW_TRANSACTION_in_transaction2716); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:650:18: ( transType )?
                int alt101=2;
                int LA101_0 = input.LA(1);

                if ( (LA101_0==IDENTIFIER) ) {
                    alt101=1;
                }
                switch (alt101) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:650:18: transType
                        {
                        pushFollow(FOLLOW_transType_in_transaction2718);
                        transType();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "parenthesizedExpression"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:655:1: parenthesizedExpression : ^( PARENTESIZED_EXPR expression ) ;
    public final void parenthesizedExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:656:5: ( ^( PARENTESIZED_EXPR expression ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:656:9: ^( PARENTESIZED_EXPR expression )
            {
            match(input,PARENTESIZED_EXPR,FOLLOW_PARENTESIZED_EXPR_in_parenthesizedExpression2740); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_parenthesizedExpression2742);
            expression();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "expression"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:659:1: expression : ^( EXPR expr ) ;
    public final void expression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:660:5: ( ^( EXPR expr ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:660:9: ^( EXPR expr )
            {
            match(input,EXPR,FOLLOW_EXPR_in_expression2767); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expr_in_expression2769);
            expr();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "expr"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:663:1: expr : ( ^( EQ expr expr ) | ^( BIT_OR expr expr ) | ^( BIT_XOR expr expr ) | ^( BIT_AND expr expr expr ) | ^( OR expr expr ) | ^( XOR expr expr ) | ^( AND expr expr ) | ^( NOT_EQUAL expr expr ) | ^( LTEQ expr expr ) | ^( GTEQ expr expr ) | ^( GT expr expr ) | ^( LT expr expr ) | ^( PLUS expr expr ) | ^( MINUS expr expr ) | ^( MULT expr expr ) | ^( DIV expr expr ) | ^( MOD expr expr ) | ^( UNARY_PLUS expr ) | ^( UNARY_MINUS expr ) | ^( NOT expr ) | ^( CAST_EXPR type expr ) | primaryExpression | ^( START_TASK expr ( completion )? ) );
    public final void expr() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:664:5: ( ^( EQ expr expr ) | ^( BIT_OR expr expr ) | ^( BIT_XOR expr expr ) | ^( BIT_AND expr expr expr ) | ^( OR expr expr ) | ^( XOR expr expr ) | ^( AND expr expr ) | ^( NOT_EQUAL expr expr ) | ^( LTEQ expr expr ) | ^( GTEQ expr expr ) | ^( GT expr expr ) | ^( LT expr expr ) | ^( PLUS expr expr ) | ^( MINUS expr expr ) | ^( MULT expr expr ) | ^( DIV expr expr ) | ^( MOD expr expr ) | ^( UNARY_PLUS expr ) | ^( UNARY_MINUS expr ) | ^( NOT expr ) | ^( CAST_EXPR type expr ) | primaryExpression | ^( START_TASK expr ( completion )? ) )
            int alt103=23;
            switch ( input.LA(1) ) {
            case EQ:
                {
                alt103=1;
                }
                break;
            case BIT_OR:
                {
                alt103=2;
                }
                break;
            case BIT_XOR:
                {
                alt103=3;
                }
                break;
            case BIT_AND:
                {
                alt103=4;
                }
                break;
            case OR:
                {
                alt103=5;
                }
                break;
            case XOR:
                {
                alt103=6;
                }
                break;
            case AND:
                {
                alt103=7;
                }
                break;
            case NOT_EQUAL:
                {
                alt103=8;
                }
                break;
            case LTEQ:
                {
                alt103=9;
                }
                break;
            case GTEQ:
                {
                alt103=10;
                }
                break;
            case GT:
                {
                alt103=11;
                }
                break;
            case LT:
                {
                alt103=12;
                }
                break;
            case PLUS:
                {
                alt103=13;
                }
                break;
            case MINUS:
                {
                alt103=14;
                }
                break;
            case MULT:
                {
                alt103=15;
                }
                break;
            case DIV:
                {
                alt103=16;
                }
                break;
            case MOD:
                {
                alt103=17;
                }
                break;
            case UNARY_PLUS:
                {
                alt103=18;
                }
                break;
            case UNARY_MINUS:
                {
                alt103=19;
                }
                break;
            case NOT:
                {
                alt103=20;
                }
                break;
            case CAST_EXPR:
                {
                alt103=21;
                }
                break;
            case ARRAY_INDEX:
            case CLASS_CONSTRUCTOR_CALL:
            case DOT:
            case FALSE:
            case FLOATLITERAL:
            case HEXLITERAL:
            case IDENTIFIER:
            case INTLITERAL:
            case METHOD_CALL:
            case NIL:
            case PARENTESIZED_EXPR:
            case SELF:
            case STRINGLITERAL:
            case SUPER:
            case TASK:
            case TRANSACTION:
            case TRUE:
                {
                alt103=22;
                }
                break;
            case START_TASK:
                {
                alt103=23;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 103, 0, input);

                throw nvae;

            }

            switch (alt103) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:664:9: ^( EQ expr expr )
                    {
                    match(input,EQ,FOLLOW_EQ_in_expr2794); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2796);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2798);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:665:9: ^( BIT_OR expr expr )
                    {
                    match(input,BIT_OR,FOLLOW_BIT_OR_in_expr2810); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2812);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2814);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:666:9: ^( BIT_XOR expr expr )
                    {
                    match(input,BIT_XOR,FOLLOW_BIT_XOR_in_expr2826); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2828);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2830);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:667:9: ^( BIT_AND expr expr expr )
                    {
                    match(input,BIT_AND,FOLLOW_BIT_AND_in_expr2842); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2844);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2846);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2848);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:668:9: ^( OR expr expr )
                    {
                    match(input,OR,FOLLOW_OR_in_expr2860); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2862);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2864);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:669:9: ^( XOR expr expr )
                    {
                    match(input,XOR,FOLLOW_XOR_in_expr2876); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2878);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2880);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:670:9: ^( AND expr expr )
                    {
                    match(input,AND,FOLLOW_AND_in_expr2892); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2894);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2896);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:671:9: ^( NOT_EQUAL expr expr )
                    {
                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_expr2908); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2910);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2912);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:672:9: ^( LTEQ expr expr )
                    {
                    match(input,LTEQ,FOLLOW_LTEQ_in_expr2924); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2926);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2928);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 10 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:673:9: ^( GTEQ expr expr )
                    {
                    match(input,GTEQ,FOLLOW_GTEQ_in_expr2940); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2942);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2944);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 11 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:674:9: ^( GT expr expr )
                    {
                    match(input,GT,FOLLOW_GT_in_expr2956); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2958);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2960);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 12 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:675:9: ^( LT expr expr )
                    {
                    match(input,LT,FOLLOW_LT_in_expr2972); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2974);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2976);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 13 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:676:9: ^( PLUS expr expr )
                    {
                    match(input,PLUS,FOLLOW_PLUS_in_expr2988); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2990);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr2992);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 14 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:677:9: ^( MINUS expr expr )
                    {
                    match(input,MINUS,FOLLOW_MINUS_in_expr3004); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3006);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr3008);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 15 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:678:9: ^( MULT expr expr )
                    {
                    match(input,MULT,FOLLOW_MULT_in_expr3020); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3022);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr3024);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 16 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:679:9: ^( DIV expr expr )
                    {
                    match(input,DIV,FOLLOW_DIV_in_expr3036); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3038);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr3040);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 17 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:680:9: ^( MOD expr expr )
                    {
                    match(input,MOD,FOLLOW_MOD_in_expr3052); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3054);
                    expr();

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

                    pushFollow(FOLLOW_expr_in_expr3056);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 18 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:681:9: ^( UNARY_PLUS expr )
                    {
                    match(input,UNARY_PLUS,FOLLOW_UNARY_PLUS_in_expr3068); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3070);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 19 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:682:9: ^( UNARY_MINUS expr )
                    {
                    match(input,UNARY_MINUS,FOLLOW_UNARY_MINUS_in_expr3082); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3084);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 20 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:683:9: ^( NOT expr )
                    {
                    match(input,NOT,FOLLOW_NOT_in_expr3096); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3098);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 21 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:684:9: ^( CAST_EXPR type expr )
                    {
                    match(input,CAST_EXPR,FOLLOW_CAST_EXPR_in_expr3110); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_type_in_expr3112);
                    type();

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

                    pushFollow(FOLLOW_expr_in_expr3114);
                    expr();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 22 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:685:9: primaryExpression
                    {
                    pushFollow(FOLLOW_primaryExpression_in_expr3125);
                    primaryExpression();

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

                    }
                    break;
                case 23 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:686:9: ^( START_TASK expr ( completion )? )
                    {
                    match(input,START_TASK,FOLLOW_START_TASK_in_expr3136); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3138);
                    expr();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:686:27: ( completion )?
                    int alt102=2;
                    int LA102_0 = input.LA(1);

                    if ( (LA102_0==COMPLETION) ) {
                        alt102=1;
                    }
                    switch (alt102) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:686:27: completion
                            {
                            pushFollow(FOLLOW_completion_in_expr3140);
                            completion();

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

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "primaryExpression"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:691:1: primaryExpression : ( ^( DOT ( primaryExpression ( IDENTIFIER ) ) ) | parenthesizedExpression | IDENTIFIER | ^( METHOD_CALL primaryExpression arguments ) | ^( ARRAY_INDEX primaryExpression expression ) | literal | newExpression | reservedPrefix );
    public final void primaryExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:692:3: ( ^( DOT ( primaryExpression ( IDENTIFIER ) ) ) | parenthesizedExpression | IDENTIFIER | ^( METHOD_CALL primaryExpression arguments ) | ^( ARRAY_INDEX primaryExpression expression ) | literal | newExpression | reservedPrefix )
            int alt104=8;
            switch ( input.LA(1) ) {
            case DOT:
                {
                alt104=1;
                }
                break;
            case PARENTESIZED_EXPR:
                {
                alt104=2;
                }
                break;
            case IDENTIFIER:
                {
                alt104=3;
                }
                break;
            case METHOD_CALL:
                {
                alt104=4;
                }
                break;
            case ARRAY_INDEX:
                {
                alt104=5;
                }
                break;
            case FALSE:
            case FLOATLITERAL:
            case HEXLITERAL:
            case INTLITERAL:
            case NIL:
            case STRINGLITERAL:
            case TRUE:
                {
                alt104=6;
                }
                break;
            case CLASS_CONSTRUCTOR_CALL:
                {
                alt104=7;
                }
                break;
            case SELF:
            case SUPER:
            case TASK:
            case TRANSACTION:
                {
                alt104=8;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 104, 0, input);

                throw nvae;

            }

            switch (alt104) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:692:5: ^( DOT ( primaryExpression ( IDENTIFIER ) ) )
                    {
                    match(input,DOT,FOLLOW_DOT_in_primaryExpression3164); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:693:13: ( primaryExpression ( IDENTIFIER ) )
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:693:17: primaryExpression ( IDENTIFIER )
                    {
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3182);
                    primaryExpression();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:694:17: ( IDENTIFIER )
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:694:21: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primaryExpression3204); if (state.failed) return ;

                    }


                    }


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:698:6: parenthesizedExpression
                    {
                    pushFollow(FOLLOW_parenthesizedExpression_in_primaryExpression3253);
                    parenthesizedExpression();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:699:6: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primaryExpression3260); if (state.failed) return ;

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:700:7: ^( METHOD_CALL primaryExpression arguments )
                    {
                    match(input,METHOD_CALL,FOLLOW_METHOD_CALL_in_primaryExpression3269); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3271);
                    primaryExpression();

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

                    pushFollow(FOLLOW_arguments_in_primaryExpression3273);
                    arguments();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:701:6: ^( ARRAY_INDEX primaryExpression expression )
                    {
                    match(input,ARRAY_INDEX,FOLLOW_ARRAY_INDEX_in_primaryExpression3282); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3285);
                    primaryExpression();

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

                    pushFollow(FOLLOW_expression_in_primaryExpression3287);
                    expression();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:702:6: literal
                    {
                    pushFollow(FOLLOW_literal_in_primaryExpression3295);
                    literal();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:703:7: newExpression
                    {
                    pushFollow(FOLLOW_newExpression_in_primaryExpression3303);
                    newExpression();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:704:7: reservedPrefix
                    {
                    pushFollow(FOLLOW_reservedPrefix_in_primaryExpression3311);
                    reservedPrefix();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "newExpression"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:708:1: newExpression : ^( CLASS_CONSTRUCTOR_CALL ( arguments )? ) ;
    public final void newExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:709:5: ( ^( CLASS_CONSTRUCTOR_CALL ( arguments )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:709:9: ^( CLASS_CONSTRUCTOR_CALL ( arguments )? )
            {
            match(input,CLASS_CONSTRUCTOR_CALL,FOLLOW_CLASS_CONSTRUCTOR_CALL_in_newExpression3333); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:709:34: ( arguments )?
                int alt105=2;
                int LA105_0 = input.LA(1);

                if ( (LA105_0==ARGUMENT_LIST) ) {
                    alt105=1;
                }
                switch (alt105) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:709:34: arguments
                        {
                        pushFollow(FOLLOW_arguments_in_newExpression3335);
                        arguments();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "arguments"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:712:1: arguments : ^( ARGUMENT_LIST ( argumentList )? ) ;
    public final void arguments() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:713:2: ( ^( ARGUMENT_LIST ( argumentList )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:713:4: ^( ARGUMENT_LIST ( argumentList )? )
            {
            match(input,ARGUMENT_LIST,FOLLOW_ARGUMENT_LIST_in_arguments3352); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:713:20: ( argumentList )?
                int alt106=2;
                int LA106_0 = input.LA(1);

                if ( (LA106_0==ARGUMENT) ) {
                    alt106=1;
                }
                switch (alt106) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:713:20: argumentList
                        {
                        pushFollow(FOLLOW_argumentList_in_arguments3354);
                        argumentList();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "eventArguments"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:716:1: eventArguments : ^( ARGUMENT_LIST_EVENT ( argumentEventList )? ) ;
    public final void eventArguments() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:717:3: ( ^( ARGUMENT_LIST_EVENT ( argumentEventList )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:717:5: ^( ARGUMENT_LIST_EVENT ( argumentEventList )? )
            {
            match(input,ARGUMENT_LIST_EVENT,FOLLOW_ARGUMENT_LIST_EVENT_in_eventArguments3369); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:717:27: ( argumentEventList )?
                int alt107=2;
                int LA107_0 = input.LA(1);

                if ( (LA107_0==ARGUMENT) ) {
                    alt107=1;
                }
                switch (alt107) {
                    case 1 :
                        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:717:27: argumentEventList
                        {
                        pushFollow(FOLLOW_argumentEventList_in_eventArguments3371);
                        argumentEventList();

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

                        }
                        break;

                }


                match(input, Token.UP, null); if (state.failed) return ;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "argumentList"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:720:1: argumentList : ( argument )+ ;
    public final void argumentList() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:721:2: ( ( argument )+ )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:721:4: ( argument )+
            {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:721:4: ( argument )+
            int cnt108=0;
            loop108:
            do {
                int alt108=2;
                int LA108_0 = input.LA(1);

                if ( (LA108_0==ARGUMENT) ) {
                    alt108=1;
                }


                switch (alt108) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:721:4: argument
                  {
                  pushFollow(FOLLOW_argument_in_argumentList3386);
                  argument();

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

                  }
                  break;

              default :
                  if ( cnt108 >= 1 ) break loop108;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(108, input);
                        throw eee;
                }
                cnt108++;
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "argumentEventList"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:724:1: argumentEventList : ( argumentEvent )+ ;
    public final void argumentEventList() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:725:3: ( ( argumentEvent )+ )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:725:5: ( argumentEvent )+
            {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:725:5: ( argumentEvent )+
            int cnt109=0;
            loop109:
            do {
                int alt109=2;
                int LA109_0 = input.LA(1);

                if ( (LA109_0==ARGUMENT) ) {
                    alt109=1;
                }


                switch (alt109) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:725:5: argumentEvent
                  {
                  pushFollow(FOLLOW_argumentEvent_in_argumentEventList3399);
                  argumentEvent();

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

                  }
                  break;

              default :
                  if ( cnt109 >= 1 ) break loop109;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(109, input);
                        throw eee;
                }
                cnt109++;
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "argument"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:728:1: argument : ^( ARGUMENT expression ( name )? ) ;
    public final void argument() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:729:2: ( ^( ARGUMENT expression ( name )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:729:4: ^( ARGUMENT expression ( name )? )
            {
            match(input,ARGUMENT,FOLLOW_ARGUMENT_in_argument3414); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_argument3416);
            expression();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:729:26: ( name )?
            int alt110=2;
            int LA110_0 = input.LA(1);

            if ( (LA110_0==AND||LA110_0==ATTRIBUTE||LA110_0==BEGIN||LA110_0==CASE||(LA110_0 >= CHANGED && LA110_0 <= CLASS)||(LA110_0 >= CONSTANT && LA110_0 <= CURSOR)||LA110_0==DO||(LA110_0 >= ELSE && LA110_0 <= ENUM)||LA110_0==EVENT||(LA110_0 >= EXCEPTION && LA110_0 <= EXIT)||LA110_0==FALSE||LA110_0==FOR||LA110_0==FORWARD||LA110_0==FROM||(LA110_0 >= HANDLER && LA110_0 <= HAS)||(LA110_0 >= IDENTIFIER && LA110_0 <= IN)||(LA110_0 >= INCLUDES && LA110_0 <= INTERFACE)||LA110_0==IS||LA110_0==LOOP||LA110_0==METHOD||(LA110_0 >= NEW && LA110_0 <= NOT)||LA110_0==OF||LA110_0==OUTPUT||(LA110_0 >= POST && LA110_0 <= PRIVATE)||LA110_0==PROPERTY||LA110_0==PUBLIC||(LA110_0 >= RAISE && LA110_0 <= RETURN)||LA110_0==SELF||LA110_0==SERVICE||LA110_0==START||(LA110_0 >= STRUCT && LA110_0 <= SUPER)||(LA110_0 >= TASK && LA110_0 <= TRANSACTION)||LA110_0==TRUE||LA110_0==TYPEDEF||LA110_0==UNION||LA110_0==VIRTUAL||LA110_0==WHEN||(LA110_0 >= WHERE && LA110_0 <= WIDGETIDENTFIER)||LA110_0==225) ) {
                alt110=1;
            }
            switch (alt110) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:729:26: name
                    {
                    pushFollow(FOLLOW_name_in_argument3418);
                    name();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "argumentEvent"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:732:1: argumentEvent : ^( ARGUMENT evParamName ( name )? ) ;
    public final void argumentEvent() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:733:3: ( ^( ARGUMENT evParamName ( name )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:733:5: ^( ARGUMENT evParamName ( name )? )
            {
            match(input,ARGUMENT,FOLLOW_ARGUMENT_in_argumentEvent3433); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_evParamName_in_argumentEvent3435);
            evParamName();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:733:28: ( name )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==AND||LA111_0==ATTRIBUTE||LA111_0==BEGIN||LA111_0==CASE||(LA111_0 >= CHANGED && LA111_0 <= CLASS)||(LA111_0 >= CONSTANT && LA111_0 <= CURSOR)||LA111_0==DO||(LA111_0 >= ELSE && LA111_0 <= ENUM)||LA111_0==EVENT||(LA111_0 >= EXCEPTION && LA111_0 <= EXIT)||LA111_0==FALSE||LA111_0==FOR||LA111_0==FORWARD||LA111_0==FROM||(LA111_0 >= HANDLER && LA111_0 <= HAS)||(LA111_0 >= IDENTIFIER && LA111_0 <= IN)||(LA111_0 >= INCLUDES && LA111_0 <= INTERFACE)||LA111_0==IS||LA111_0==LOOP||LA111_0==METHOD||(LA111_0 >= NEW && LA111_0 <= NOT)||LA111_0==OF||LA111_0==OUTPUT||(LA111_0 >= POST && LA111_0 <= PRIVATE)||LA111_0==PROPERTY||LA111_0==PUBLIC||(LA111_0 >= RAISE && LA111_0 <= RETURN)||LA111_0==SELF||LA111_0==SERVICE||LA111_0==START||(LA111_0 >= STRUCT && LA111_0 <= SUPER)||(LA111_0 >= TASK && LA111_0 <= TRANSACTION)||LA111_0==TRUE||LA111_0==TYPEDEF||LA111_0==UNION||LA111_0==VIRTUAL||LA111_0==WHEN||(LA111_0 >= WHERE && LA111_0 <= WIDGETIDENTFIER)||LA111_0==225) ) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:733:28: name
                    {
                    pushFollow(FOLLOW_name_in_argumentEvent3437);
                    name();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "evParamName"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:736:1: evParamName : ( IDENTIFIER | RETURN | EXCEPTION );
    public final void evParamName() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:737:2: ( IDENTIFIER | RETURN | EXCEPTION )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==EXCEPTION||input.LA(1)==IDENTIFIER||input.LA(1)==RETURN ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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


    public static class modifier_return extends TreeRuleReturnScope {
    };


    // $ANTLR start "modifier"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:742:1: modifier : ( 'public' | 'private' | 'publicinternal' | 'privateinternal' );
    public final ForteAST.modifier_return modifier() throws RecognitionException {
        ForteAST.modifier_return retval = new ForteAST.modifier_return();
        retval.start = input.LT(1);


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:743:5: ( 'public' | 'private' | 'publicinternal' | 'privateinternal' )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==PRIVATE||input.LA(1)==PUBLIC||input.LA(1)==228||input.LA(1)==230 ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "type"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:751:1: type : ( qualifiedType | arrayType | pointerType | '\"$toocomplex\"' );
    public final void type() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:752:5: ( qualifiedType | arrayType | pointerType | '\"$toocomplex\"' )
            int alt112=4;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                alt112=1;
                }
                break;
            case ARRAY_TYPE:
                {
                alt112=2;
                }
                break;
            case POINTER_TYPE:
                {
                alt112=3;
                }
                break;
            case 222:
                {
                alt112=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 112, 0, input);

                throw nvae;

            }

            switch (alt112) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:752:9: qualifiedType
                    {
                    pushFollow(FOLLOW_qualifiedType_in_type3540);
                    qualifiedType();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:753:8: arrayType
                    {
                    pushFollow(FOLLOW_arrayType_in_type3549);
                    arrayType();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:754:9: pointerType
                    {
                    pushFollow(FOLLOW_pointerType_in_type3559);
                    pointerType();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:755:8: '\"$toocomplex\"'
                    {
                    match(input,222,FOLLOW_222_in_type3568); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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


    public static class qualifiedType_return extends TreeRuleReturnScope {
    };


    // $ANTLR start "qualifiedType"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:760:1: qualifiedType : IDENTIFIER ( DOT IDENTIFIER )? ;
    public final ForteAST.qualifiedType_return qualifiedType() throws RecognitionException {
        ForteAST.qualifiedType_return retval = new ForteAST.qualifiedType_return();
        retval.start = input.LT(1);


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:762:4: ( IDENTIFIER ( DOT IDENTIFIER )? )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:762:6: IDENTIFIER ( DOT IDENTIFIER )?
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedType3591); if (state.failed) return retval;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:762:17: ( DOT IDENTIFIER )?
            int alt113=2;
            int LA113_0 = input.LA(1);

            if ( (LA113_0==DOT) ) {
                int LA113_1 = input.LA(2);

                if ( (LA113_1==IDENTIFIER) ) {
                    alt113=1;
                }
            }
            switch (alt113) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:762:18: DOT IDENTIFIER
                    {
                    match(input,DOT,FOLLOW_DOT_in_qualifiedType3594); if (state.failed) return retval;

                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedType3596); if (state.failed) return retval;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "qualifiedName"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:765:1: qualifiedName : ( name | ^( DOT qualifiedName name ) );
    public final void qualifiedName() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:766:7: ( name | ^( DOT qualifiedName name ) )
            int alt114=2;
            int LA114_0 = input.LA(1);

            if ( (LA114_0==AND||LA114_0==ATTRIBUTE||LA114_0==BEGIN||LA114_0==CASE||(LA114_0 >= CHANGED && LA114_0 <= CLASS)||(LA114_0 >= CONSTANT && LA114_0 <= CURSOR)||LA114_0==DO||(LA114_0 >= ELSE && LA114_0 <= ENUM)||LA114_0==EVENT||(LA114_0 >= EXCEPTION && LA114_0 <= EXIT)||LA114_0==FALSE||LA114_0==FOR||LA114_0==FORWARD||LA114_0==FROM||(LA114_0 >= HANDLER && LA114_0 <= HAS)||(LA114_0 >= IDENTIFIER && LA114_0 <= IN)||(LA114_0 >= INCLUDES && LA114_0 <= INTERFACE)||LA114_0==IS||LA114_0==LOOP||LA114_0==METHOD||(LA114_0 >= NEW && LA114_0 <= NOT)||LA114_0==OF||LA114_0==OUTPUT||(LA114_0 >= POST && LA114_0 <= PRIVATE)||LA114_0==PROPERTY||LA114_0==PUBLIC||(LA114_0 >= RAISE && LA114_0 <= RETURN)||LA114_0==SELF||LA114_0==SERVICE||LA114_0==START||(LA114_0 >= STRUCT && LA114_0 <= SUPER)||(LA114_0 >= TASK && LA114_0 <= TRANSACTION)||LA114_0==TRUE||LA114_0==TYPEDEF||LA114_0==UNION||LA114_0==VIRTUAL||LA114_0==WHEN||(LA114_0 >= WHERE && LA114_0 <= WIDGETIDENTFIER)||LA114_0==225) ) {
                alt114=1;
            }
            else if ( (LA114_0==DOT) ) {
                alt114=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 114, 0, input);

                throw nvae;

            }
            switch (alt114) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:766:9: name
                    {
                    pushFollow(FOLLOW_name_in_qualifiedName3617);
                    name();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:767:9: ^( DOT qualifiedName name )
                    {
                    match(input,DOT,FOLLOW_DOT_in_qualifiedName3628); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_qualifiedName_in_qualifiedName3630);
                    qualifiedName();

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

                    pushFollow(FOLLOW_name_in_qualifiedName3632);
                    name();

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

                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "reservedPrefix"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:771:1: reservedPrefix : ( SELF | SUPER | TASK | TRANSACTION );
    public final void reservedPrefix() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:772:3: ( SELF | SUPER | TASK | TRANSACTION )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==SELF||input.LA(1)==SUPER||input.LA(1)==TASK||input.LA(1)==TRANSACTION ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "arrayType"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:779:1: arrayType : ^( ARRAY_TYPE qualifiedType ) ;
    public final void arrayType() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:780:3: ( ^( ARRAY_TYPE qualifiedType ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:780:5: ^( ARRAY_TYPE qualifiedType )
            {
            match(input,ARRAY_TYPE,FOLLOW_ARRAY_TYPE_in_arrayType3685); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_qualifiedType_in_arrayType3687);
            qualifiedType();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "arrayDeclarator"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:783:1: arrayDeclarator : ^( ARRAY_CSTYLE C_ARRAY_RANGE ) ;
    public final void arrayDeclarator() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:784:5: ( ^( ARRAY_CSTYLE C_ARRAY_RANGE ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:784:9: ^( ARRAY_CSTYLE C_ARRAY_RANGE )
            {
            match(input,ARRAY_CSTYLE,FOLLOW_ARRAY_CSTYLE_in_arrayDeclarator3707); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,C_ARRAY_RANGE,FOLLOW_C_ARRAY_RANGE_in_arrayDeclarator3709); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "pointerType"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:788:1: pointerType : ^( POINTER_TYPE type ) ;
    public final void pointerType() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:789:2: ( ^( POINTER_TYPE type ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:789:4: ^( POINTER_TYPE type )
            {
            match(input,POINTER_TYPE,FOLLOW_POINTER_TYPE_in_pointerType3729); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_pointerType3731);
            type();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "transType"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:797:1: transType : IDENTIFIER ;
    public final void transType() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:798:2: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:798:4: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_transType3748); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "cStruct"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:838:1: cStruct : ^( STRUCT IDENTIFIER ( IDENTIFIER type )+ ) ;
    public final void cStruct() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:839:2: ( ^( STRUCT IDENTIFIER ( IDENTIFIER type )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:839:4: ^( STRUCT IDENTIFIER ( IDENTIFIER type )+ )
            {
            match(input,STRUCT,FOLLOW_STRUCT_in_cStruct3798); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cStruct3800); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:839:24: ( IDENTIFIER type )+
            int cnt115=0;
            loop115:
            do {
                int alt115=2;
                int LA115_0 = input.LA(1);

                if ( (LA115_0==IDENTIFIER) ) {
                    alt115=1;
                }


                switch (alt115) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:839:25: IDENTIFIER type
                  {
                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cStruct3803); if (state.failed) return ;

                  pushFollow(FOLLOW_type_in_cStruct3805);
                  type();

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

                  }
                  break;

              default :
                  if ( cnt115 >= 1 ) break loop115;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(115, input);
                        throw eee;
                }
                cnt115++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "cEnum"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:842:1: cEnum : ^( ENUM IDENTIFIER ( cEnumMember )+ ) ;
    public final void cEnum() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:843:2: ( ^( ENUM IDENTIFIER ( cEnumMember )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:843:4: ^( ENUM IDENTIFIER ( cEnumMember )+ )
            {
            match(input,ENUM,FOLLOW_ENUM_in_cEnum3820); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cEnum3822); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:843:22: ( cEnumMember )+
            int cnt116=0;
            loop116:
            do {
                int alt116=2;
                int LA116_0 = input.LA(1);

                if ( (LA116_0==IDENTIFIER) ) {
                    alt116=1;
                }


                switch (alt116) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:843:22: cEnumMember
                  {
                  pushFollow(FOLLOW_cEnumMember_in_cEnum3824);
                  cEnumMember();

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

                  }
                  break;

              default :
                  if ( cnt116 >= 1 ) break loop116;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(116, input);
                        throw eee;
                }
                cnt116++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "cEnumMember"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:845:1: cEnumMember : ^( IDENTIFIER literal ) ;
    public final void cEnumMember() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:846:3: ( ^( IDENTIFIER literal ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:846:5: ^( IDENTIFIER literal )
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cEnumMember3839); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_literal_in_cEnumMember3841);
            literal();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "cTypeDef"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:849:1: cTypeDef : ^( TYPEDEF IDENTIFIER type ) ;
    public final void cTypeDef() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:850:3: ( ^( TYPEDEF IDENTIFIER type ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:850:5: ^( TYPEDEF IDENTIFIER type )
            {
            match(input,TYPEDEF,FOLLOW_TYPEDEF_in_cTypeDef3856); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cTypeDef3858); if (state.failed) return ;

            pushFollow(FOLLOW_type_in_cTypeDef3860);
            type();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "array"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:854:1: array : IDENTIFIER ( arrayDeclarator )? ;
    public final void array() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:855:2: ( IDENTIFIER ( arrayDeclarator )? )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:855:4: IDENTIFIER ( arrayDeclarator )?
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_array3875); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:856:3: ( arrayDeclarator )?
            int alt117=2;
            int LA117_0 = input.LA(1);

            if ( (LA117_0==ARRAY_CSTYLE) ) {
                alt117=1;
            }
            switch (alt117) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:856:3: arrayDeclarator
                    {
                    pushFollow(FOLLOW_arrayDeclarator_in_array3880);
                    arrayDeclarator();

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

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "name"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:866:1: name : ( reservedWord | IDENTIFIER | WIDGETIDENTFIER );
    public final void name() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:867:2: ( reservedWord | IDENTIFIER | WIDGETIDENTFIER )
            int alt118=3;
            switch ( input.LA(1) ) {
            case AND:
            case ATTRIBUTE:
            case BEGIN:
            case CASE:
            case CHANGED:
            case CLASS:
            case CONSTANT:
            case CONTINUE:
            case COPY:
            case CURSOR:
            case DO:
            case ELSE:
            case ELSEIF:
            case END:
            case ENUM:
            case EVENT:
            case EXCEPTION:
            case EXIT:
            case FALSE:
            case FOR:
            case FORWARD:
            case FROM:
            case HANDLER:
            case HAS:
            case IF:
            case IMPLEMENTS:
            case IN:
            case INCLUDES:
            case INHERITS:
            case INPUT:
            case INTERFACE:
            case IS:
            case LOOP:
            case METHOD:
            case NEW:
            case NIL:
            case NOT:
            case OF:
            case OUTPUT:
            case POST:
            case POSTREGISTER:
            case PREREGISTER:
            case PRIVATE:
            case PROPERTY:
            case PUBLIC:
            case RAISE:
            case REGISTER:
            case RETURN:
            case SELF:
            case SERVICE:
            case START:
            case STRUCT:
            case SUPER:
            case TASK:
            case THEN:
            case TO:
            case TRANSACTION:
            case TRUE:
            case TYPEDEF:
            case UNION:
            case VIRTUAL:
            case WHEN:
            case WHERE:
            case WHILE:
            case 225:
                {
                alt118=1;
                }
                break;
            case IDENTIFIER:
                {
                alt118=2;
                }
                break;
            case WIDGETIDENTFIER:
                {
                alt118=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 118, 0, input);

                throw nvae;

            }

            switch (alt118) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:867:5: reservedWord
                    {
                    pushFollow(FOLLOW_reservedWord_in_name3897);
                    reservedWord();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:868:5: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_name3903); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:869:5: WIDGETIDENTFIER
                    {
                    match(input,WIDGETIDENTFIER,FOLLOW_WIDGETIDENTFIER_in_name3910); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "reservedWord"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:873:1: reservedWord : ( AND | ATTRIBUTE | BEGIN | CASE | CHANGED | CLASS | CONSTANT | CONTINUE | COPY | CURSOR | DO | ELSE | ELSEIF | END | ENUM | EVENT | EXCEPTION | EXIT | FALSE | FOR | FORWARD | FROM | HANDLER | HAS | IF | IMPLEMENTS | IN | INCLUDES | INHERITS | INPUT | INTERFACE | IS | LOOP | METHOD | NEW | NIL | NOT | OF | OUTPUT | POST | POSTREGISTER | PREREGISTER | PRIVATE | PROPERTY | PUBLIC | RAISE | REGISTER | RETURN | SELF | SERVICE | START | STRUCT | SUPER | TASK | THEN | TO | TRANSACTION | TRUE | TYPEDEF | UNION | VIRTUAL | WHEN | WHERE | WHILE | '$toocomplex' );
    public final void reservedWord() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:874:2: ( AND | ATTRIBUTE | BEGIN | CASE | CHANGED | CLASS | CONSTANT | CONTINUE | COPY | CURSOR | DO | ELSE | ELSEIF | END | ENUM | EVENT | EXCEPTION | EXIT | FALSE | FOR | FORWARD | FROM | HANDLER | HAS | IF | IMPLEMENTS | IN | INCLUDES | INHERITS | INPUT | INTERFACE | IS | LOOP | METHOD | NEW | NIL | NOT | OF | OUTPUT | POST | POSTREGISTER | PREREGISTER | PRIVATE | PROPERTY | PUBLIC | RAISE | REGISTER | RETURN | SELF | SERVICE | START | STRUCT | SUPER | TASK | THEN | TO | TRANSACTION | TRUE | TYPEDEF | UNION | VIRTUAL | WHEN | WHERE | WHILE | '$toocomplex' )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==AND||input.LA(1)==ATTRIBUTE||input.LA(1)==BEGIN||input.LA(1)==CASE||(input.LA(1) >= CHANGED && input.LA(1) <= CLASS)||(input.LA(1) >= CONSTANT && input.LA(1) <= CURSOR)||input.LA(1)==DO||(input.LA(1) >= ELSE && input.LA(1) <= ENUM)||input.LA(1)==EVENT||(input.LA(1) >= EXCEPTION && input.LA(1) <= EXIT)||input.LA(1)==FALSE||input.LA(1)==FOR||input.LA(1)==FORWARD||input.LA(1)==FROM||(input.LA(1) >= HANDLER && input.LA(1) <= HAS)||(input.LA(1) >= IF && input.LA(1) <= IN)||(input.LA(1) >= INCLUDES && input.LA(1) <= INTERFACE)||input.LA(1)==IS||input.LA(1)==LOOP||input.LA(1)==METHOD||(input.LA(1) >= NEW && input.LA(1) <= NOT)||input.LA(1)==OF||input.LA(1)==OUTPUT||(input.LA(1) >= POST && input.LA(1) <= PRIVATE)||input.LA(1)==PROPERTY||input.LA(1)==PUBLIC||(input.LA(1) >= RAISE && input.LA(1) <= RETURN)||input.LA(1)==SELF||input.LA(1)==SERVICE||input.LA(1)==START||(input.LA(1) >= STRUCT && input.LA(1) <= SUPER)||(input.LA(1) >= TASK && input.LA(1) <= TRANSACTION)||input.LA(1)==TRUE||input.LA(1)==TYPEDEF||input.LA(1)==UNION||input.LA(1)==VIRTUAL||input.LA(1)==WHEN||(input.LA(1) >= WHERE && input.LA(1) <= WHILE)||input.LA(1)==225 ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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


    public static class literal_return extends TreeRuleReturnScope {
    };


    // $ANTLR start "literal"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:943:1: literal : ( HEXLITERAL | INTLITERAL | FLOATLITERAL | STRINGLITERAL | TRUE | FALSE | NIL );
    public final ForteAST.literal_return literal() throws RecognitionException {
        ForteAST.literal_return retval = new ForteAST.literal_return();
        retval.start = input.LT(1);


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:944:5: ( HEXLITERAL | INTLITERAL | FLOATLITERAL | STRINGLITERAL | TRUE | FALSE | NIL )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( (input.LA(1) >= FALSE && input.LA(1) <= FLOATLITERAL)||input.LA(1)==HEXLITERAL||input.LA(1)==INTLITERAL||input.LA(1)==NIL||input.LA(1)==STRINGLITERAL||input.LA(1)==TRUE ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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


    public static class booleanLiteral_return extends TreeRuleReturnScope {
    };


    // $ANTLR start "booleanLiteral"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:953:1: booleanLiteral : ( TRUE | FALSE );
    public final ForteAST.booleanLiteral_return booleanLiteral() throws RecognitionException {
        ForteAST.booleanLiteral_return retval = new ForteAST.booleanLiteral_return();
        retval.start = input.LT(1);


        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:954:3: ( TRUE | FALSE )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==FALSE||input.LA(1)==TRUE ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_statement"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:961:1: sql_statement : SQL ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select ) ( SEMI | DO ) ;
    public final void sql_statement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:962:3: ( SQL ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select ) ( SEMI | DO ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:962:5: SQL ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select ) ( SEMI | DO )
            {
            match(input,SQL,FOLLOW_SQL_in_sql_statement4429); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:963:4: ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select )
            int alt119=7;
            switch ( input.LA(1) ) {
            case SQL_CURSOR:
                {
                alt119=1;
                }
                break;
            case SQL_DELETE:
                {
                alt119=2;
                }
                break;
            case SQL_EXECUTE_IMMEDIATE:
                {
                alt119=3;
                }
                break;
            case SQL_EXECUTE_PROCEDURE:
                {
                alt119=4;
                }
                break;
            case SQL_CURSOR_FETCH:
                {
                alt119=5;
                }
                break;
            case SQL_INSERT:
                {
                alt119=6;
                }
                break;
            case SQL_SELECT:
                {
                alt119=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 119, 0, input);

                throw nvae;

            }

            switch (alt119) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:963:5: sql_cursor
                    {
                    pushFollow(FOLLOW_sql_cursor_in_sql_statement4436);
                    sql_cursor();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:964:5: sql_delete
                    {
                    pushFollow(FOLLOW_sql_delete_in_sql_statement4442);
                    sql_delete();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:965:5: sql_execute_immediate
                    {
                    pushFollow(FOLLOW_sql_execute_immediate_in_sql_statement4448);
                    sql_execute_immediate();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:966:5: sql_execute_procedure
                    {
                    pushFollow(FOLLOW_sql_execute_procedure_in_sql_statement4454);
                    sql_execute_procedure();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:967:5: sql_fetch_cursor
                    {
                    pushFollow(FOLLOW_sql_fetch_cursor_in_sql_statement4460);
                    sql_fetch_cursor();

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:968:5: sql_insert
                    {
                    pushFollow(FOLLOW_sql_insert_in_sql_statement4466);
                    sql_insert();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:969:5: sql_select
                    {
                    pushFollow(FOLLOW_sql_select_in_sql_statement4472);
                    sql_select();

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

                    }
                    break;

            }


            if ( input.LA(1)==DO||input.LA(1)==SEMI ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_cursor"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:974:1: sql_cursor : ^( SQL_CURSOR IDENTIFIER sql_cursor_identifier ( arguments )? ( on_session )? ) ;
    public final void sql_cursor() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:975:3: ( ^( SQL_CURSOR IDENTIFIER sql_cursor_identifier ( arguments )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:975:5: ^( SQL_CURSOR IDENTIFIER sql_cursor_identifier ( arguments )? ( on_session )? )
            {
            match(input,SQL_CURSOR,FOLLOW_SQL_CURSOR_in_sql_cursor4497); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_cursor4499); if (state.failed) return ;

            pushFollow(FOLLOW_sql_cursor_identifier_in_sql_cursor4501);
            sql_cursor_identifier();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:975:51: ( arguments )?
            int alt120=2;
            int LA120_0 = input.LA(1);

            if ( (LA120_0==ARGUMENT_LIST) ) {
                alt120=1;
            }
            switch (alt120) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:975:51: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_sql_cursor4503);
                    arguments();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:975:62: ( on_session )?
            int alt121=2;
            int LA121_0 = input.LA(1);

            if ( (LA121_0==ON_SESSION) ) {
                alt121=1;
            }
            switch (alt121) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:975:62: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_cursor4506);
                    on_session();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_cursor_identifier"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:979:1: sql_cursor_identifier : IDENTIFIER ;
    public final void sql_cursor_identifier() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:980:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:980:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_cursor_identifier4522); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_delete"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:983:1: sql_delete : ^( SQL_DELETE table_name ( sql_condition )? ( on_session )? ) ;
    public final void sql_delete() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:984:3: ( ^( SQL_DELETE table_name ( sql_condition )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:984:5: ^( SQL_DELETE table_name ( sql_condition )? ( on_session )? )
            {
            match(input,SQL_DELETE,FOLLOW_SQL_DELETE_in_sql_delete4538); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_table_name_in_sql_delete4540);
            table_name();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:984:29: ( sql_condition )?
            int alt122=2;
            int LA122_0 = input.LA(1);

            if ( (LA122_0==AND||LA122_0==ATTRIBUTE||LA122_0==BEGIN||LA122_0==CASE||(LA122_0 >= CHANGED && LA122_0 <= CLASS)||(LA122_0 >= CONSTANT && LA122_0 <= CURSOR)||(LA122_0 >= DO && LA122_0 <= DOT)||(LA122_0 >= ELSE && LA122_0 <= EVENT)||(LA122_0 >= EXCEPTION && LA122_0 <= EXIT)||LA122_0==FALSE||LA122_0==FOR||LA122_0==FORWARD||LA122_0==FROM||(LA122_0 >= GT && LA122_0 <= HAS)||(LA122_0 >= IDENTIFIER && LA122_0 <= IN)||(LA122_0 >= INCLUDES && LA122_0 <= INTERFACE)||LA122_0==IS||(LA122_0 >= LOOP && LA122_0 <= LTEQ)||LA122_0==METHOD||(LA122_0 >= NEW && LA122_0 <= NOT_EQUAL)||LA122_0==OF||LA122_0==OUTPUT||(LA122_0 >= POST && LA122_0 <= PRIVATE)||LA122_0==PROPERTY||LA122_0==PUBLIC||(LA122_0 >= RAISE && LA122_0 <= RETURN)||LA122_0==SELF||LA122_0==SERVICE||LA122_0==SQL_SELECT||(LA122_0 >= SQL_VARIABLE && LA122_0 <= START)||(LA122_0 >= STRUCT && LA122_0 <= SUPER)||(LA122_0 >= TASK && LA122_0 <= TRANSACTION)||LA122_0==TRUE||LA122_0==TYPEDEF||LA122_0==UNION||LA122_0==VIRTUAL||LA122_0==WHEN||(LA122_0 >= WHERE && LA122_0 <= WIDGETIDENTFIER)||LA122_0==225) ) {
                alt122=1;
            }
            switch (alt122) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:984:29: sql_condition
                    {
                    pushFollow(FOLLOW_sql_condition_in_sql_delete4542);
                    sql_condition();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:984:44: ( on_session )?
            int alt123=2;
            int LA123_0 = input.LA(1);

            if ( (LA123_0==ON_SESSION) ) {
                alt123=1;
            }
            switch (alt123) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:984:44: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_delete4545);
                    on_session();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_execute_immediate"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:987:1: sql_execute_immediate : ^( SQL_EXECUTE_IMMEDIATE ( STRINGLITERAL | IDENTIFIER ) ( on_session )? ) ;
    public final void sql_execute_immediate() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:988:3: ( ^( SQL_EXECUTE_IMMEDIATE ( STRINGLITERAL | IDENTIFIER ) ( on_session )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:988:5: ^( SQL_EXECUTE_IMMEDIATE ( STRINGLITERAL | IDENTIFIER ) ( on_session )? )
            {
            match(input,SQL_EXECUTE_IMMEDIATE,FOLLOW_SQL_EXECUTE_IMMEDIATE_in_sql_execute_immediate4563); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            if ( input.LA(1)==IDENTIFIER||input.LA(1)==STRINGLITERAL ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:988:58: ( on_session )?
            int alt124=2;
            int LA124_0 = input.LA(1);

            if ( (LA124_0==ON_SESSION) ) {
                alt124=1;
            }
            switch (alt124) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:988:58: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_execute_immediate4573);
                    on_session();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_execute_procedure"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:991:1: sql_execute_procedure : ^( SQL_EXECUTE_PROCEDURE IDENTIFIER ( arguments )? ( on_session )? ) ;
    public final void sql_execute_procedure() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:992:3: ( ^( SQL_EXECUTE_PROCEDURE IDENTIFIER ( arguments )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:992:5: ^( SQL_EXECUTE_PROCEDURE IDENTIFIER ( arguments )? ( on_session )? )
            {
            match(input,SQL_EXECUTE_PROCEDURE,FOLLOW_SQL_EXECUTE_PROCEDURE_in_sql_execute_procedure4592); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_execute_procedure4594); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:992:40: ( arguments )?
            int alt125=2;
            int LA125_0 = input.LA(1);

            if ( (LA125_0==ARGUMENT_LIST) ) {
                alt125=1;
            }
            switch (alt125) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:992:40: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_sql_execute_procedure4596);
                    arguments();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:992:51: ( on_session )?
            int alt126=2;
            int LA126_0 = input.LA(1);

            if ( (LA126_0==ON_SESSION) ) {
                alt126=1;
            }
            switch (alt126) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:992:51: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_execute_procedure4599);
                    on_session();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_fetch_cursor"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:996:1: sql_fetch_cursor : ^( SQL_CURSOR_FETCH IDENTIFIER ( sql_cursor_next )? sql_variable_reference ) ;
    public final void sql_fetch_cursor() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:997:3: ( ^( SQL_CURSOR_FETCH IDENTIFIER ( sql_cursor_next )? sql_variable_reference ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:997:5: ^( SQL_CURSOR_FETCH IDENTIFIER ( sql_cursor_next )? sql_variable_reference )
            {
            match(input,SQL_CURSOR_FETCH,FOLLOW_SQL_CURSOR_FETCH_in_sql_fetch_cursor4620); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_fetch_cursor4622); if (state.failed) return ;

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:997:35: ( sql_cursor_next )?
            int alt127=2;
            int LA127_0 = input.LA(1);

            if ( (LA127_0==SQL_CURSOR_NEXT) ) {
                alt127=1;
            }
            switch (alt127) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:997:35: sql_cursor_next
                    {
                    pushFollow(FOLLOW_sql_cursor_next_in_sql_fetch_cursor4624);
                    sql_cursor_next();

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

                    }
                    break;

            }


            pushFollow(FOLLOW_sql_variable_reference_in_sql_fetch_cursor4627);
            sql_variable_reference();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_cursor_next"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1000:1: sql_cursor_next : ^( SQL_CURSOR_NEXT IDENTIFIER ) ;
    public final void sql_cursor_next() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1001:3: ( ^( SQL_CURSOR_NEXT IDENTIFIER ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1001:5: ^( SQL_CURSOR_NEXT IDENTIFIER )
            {
            match(input,SQL_CURSOR_NEXT,FOLLOW_SQL_CURSOR_NEXT_in_sql_cursor_next4644); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_cursor_next4646); if (state.failed) return ;

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_insert"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1004:1: sql_insert : ^( SQL_INSERT table_name column_list sql_variable_reference ( on_session )? ) ;
    public final void sql_insert() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1005:5: ( ^( SQL_INSERT table_name column_list sql_variable_reference ( on_session )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1005:7: ^( SQL_INSERT table_name column_list sql_variable_reference ( on_session )? )
            {
            match(input,SQL_INSERT,FOLLOW_SQL_INSERT_in_sql_insert4666); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_table_name_in_sql_insert4668);
            table_name();

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

            pushFollow(FOLLOW_column_list_in_sql_insert4670);
            column_list();

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

            pushFollow(FOLLOW_sql_variable_reference_in_sql_insert4673);
            sql_variable_reference();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1005:67: ( on_session )?
            int alt128=2;
            int LA128_0 = input.LA(1);

            if ( (LA128_0==ON_SESSION) ) {
                alt128=1;
            }
            switch (alt128) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1005:67: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_insert4675);
                    on_session();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_select"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1009:1: sql_select : ^( SQL_SELECT ( IDENTIFIER )? column_list ( sql_variable_reference )? table_list ( sql_condition )? ( group_by )? ( sql_condition )? ( order_by )? ( on_session )? ) ;
    public final void sql_select() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:3: ( ^( SQL_SELECT ( IDENTIFIER )? column_list ( sql_variable_reference )? table_list ( sql_condition )? ( group_by )? ( sql_condition )? ( order_by )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:5: ^( SQL_SELECT ( IDENTIFIER )? column_list ( sql_variable_reference )? table_list ( sql_condition )? ( group_by )? ( sql_condition )? ( order_by )? ( on_session )? )
            {
            match(input,SQL_SELECT,FOLLOW_SQL_SELECT_in_sql_select4700); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:18: ( IDENTIFIER )?
            int alt129=2;
            int LA129_0 = input.LA(1);

            if ( (LA129_0==IDENTIFIER) ) {
                int LA129_1 = input.LA(2);

                if ( (LA129_1==IDENTIFIER||LA129_1==MULT) ) {
                    alt129=1;
                }
            }
            switch (alt129) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:18: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_select4702); if (state.failed) return ;

                    }
                    break;

            }


            pushFollow(FOLLOW_column_list_in_sql_select4705);
            column_list();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:42: ( sql_variable_reference )?
            int alt130=2;
            int LA130_0 = input.LA(1);

            if ( (LA130_0==SQL_VARIABLE) ) {
                alt130=1;
            }
            switch (alt130) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:42: sql_variable_reference
                    {
                    pushFollow(FOLLOW_sql_variable_reference_in_sql_select4707);
                    sql_variable_reference();

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

                    }
                    break;

            }


            pushFollow(FOLLOW_table_list_in_sql_select4710);
            table_list();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:77: ( sql_condition )?
            int alt131=2;
            switch ( input.LA(1) ) {
                case SQL_VARIABLE:
                    {
                    int LA131_1 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case NOT:
                    {
                    int LA131_2 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case IDENTIFIER:
                    {
                    int LA131_3 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case WIDGETIDENTFIER:
                    {
                    int LA131_4 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case DOT:
                    {
                    int LA131_5 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case EQ:
                case GT:
                case GTEQ:
                case LT:
                case LTEQ:
                case NOT_EQUAL:
                    {
                    int LA131_6 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case AND:
                case ATTRIBUTE:
                case BEGIN:
                case CASE:
                case CHANGED:
                case CLASS:
                case CONSTANT:
                case CONTINUE:
                case COPY:
                case CURSOR:
                case DO:
                case ELSE:
                case ELSEIF:
                case END:
                case ENUM:
                case EVENT:
                case EXCEPTION:
                case EXIT:
                case FALSE:
                case FOR:
                case FORWARD:
                case FROM:
                case HANDLER:
                case HAS:
                case IF:
                case IMPLEMENTS:
                case IN:
                case INCLUDES:
                case INHERITS:
                case INPUT:
                case INTERFACE:
                case IS:
                case LOOP:
                case METHOD:
                case NEW:
                case NIL:
                case OF:
                case OUTPUT:
                case POST:
                case POSTREGISTER:
                case PREREGISTER:
                case PRIVATE:
                case PROPERTY:
                case PUBLIC:
                case RAISE:
                case REGISTER:
                case RETURN:
                case SELF:
                case SERVICE:
                case START:
                case STRUCT:
                case SUPER:
                case TASK:
                case THEN:
                case TO:
                case TRANSACTION:
                case TRUE:
                case TYPEDEF:
                case UNION:
                case VIRTUAL:
                case WHEN:
                case WHERE:
                case WHILE:
                case 225:
                    {
                    int LA131_7 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case SQL_SELECT:
                    {
                    int LA131_8 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
                case LPAREN:
                    {
                    int LA131_9 = input.LA(2);

                    if ( (synpred299_ForteAST()) ) {
                        alt131=1;
                    }
                    }
                    break;
            }

            switch (alt131) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:77: sql_condition
                    {
                    pushFollow(FOLLOW_sql_condition_in_sql_select4712);
                    sql_condition();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:92: ( group_by )?
            int alt132=2;
            int LA132_0 = input.LA(1);

            if ( (LA132_0==SQL_GROUP_BY) ) {
                alt132=1;
            }
            switch (alt132) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:92: group_by
                    {
                    pushFollow(FOLLOW_group_by_in_sql_select4715);
                    group_by();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:102: ( sql_condition )?
            int alt133=2;
            int LA133_0 = input.LA(1);

            if ( (LA133_0==AND||LA133_0==ATTRIBUTE||LA133_0==BEGIN||LA133_0==CASE||(LA133_0 >= CHANGED && LA133_0 <= CLASS)||(LA133_0 >= CONSTANT && LA133_0 <= CURSOR)||(LA133_0 >= DO && LA133_0 <= DOT)||(LA133_0 >= ELSE && LA133_0 <= EVENT)||(LA133_0 >= EXCEPTION && LA133_0 <= EXIT)||LA133_0==FALSE||LA133_0==FOR||LA133_0==FORWARD||LA133_0==FROM||(LA133_0 >= GT && LA133_0 <= HAS)||(LA133_0 >= IDENTIFIER && LA133_0 <= IN)||(LA133_0 >= INCLUDES && LA133_0 <= INTERFACE)||LA133_0==IS||(LA133_0 >= LOOP && LA133_0 <= LTEQ)||LA133_0==METHOD||(LA133_0 >= NEW && LA133_0 <= NOT_EQUAL)||LA133_0==OF||LA133_0==OUTPUT||(LA133_0 >= POST && LA133_0 <= PRIVATE)||LA133_0==PROPERTY||LA133_0==PUBLIC||(LA133_0 >= RAISE && LA133_0 <= RETURN)||LA133_0==SELF||LA133_0==SERVICE||LA133_0==SQL_SELECT||(LA133_0 >= SQL_VARIABLE && LA133_0 <= START)||(LA133_0 >= STRUCT && LA133_0 <= SUPER)||(LA133_0 >= TASK && LA133_0 <= TRANSACTION)||LA133_0==TRUE||LA133_0==TYPEDEF||LA133_0==UNION||LA133_0==VIRTUAL||LA133_0==WHEN||(LA133_0 >= WHERE && LA133_0 <= WIDGETIDENTFIER)||LA133_0==225) ) {
                alt133=1;
            }
            switch (alt133) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:102: sql_condition
                    {
                    pushFollow(FOLLOW_sql_condition_in_sql_select4718);
                    sql_condition();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:117: ( order_by )?
            int alt134=2;
            int LA134_0 = input.LA(1);

            if ( (LA134_0==SQL_ORDER_BY) ) {
                alt134=1;
            }
            switch (alt134) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:117: order_by
                    {
                    pushFollow(FOLLOW_order_by_in_sql_select4721);
                    order_by();

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

                    }
                    break;

            }


            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:127: ( on_session )?
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( (LA135_0==ON_SESSION) ) {
                alt135=1;
            }
            switch (alt135) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:127: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_select4724);
                    on_session();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "group_by"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1014:1: group_by : ^( SQL_GROUP_BY ( column_name IDENTIFIER )+ ) ;
    public final void group_by() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1015:5: ( ^( SQL_GROUP_BY ( column_name IDENTIFIER )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1015:7: ^( SQL_GROUP_BY ( column_name IDENTIFIER )+ )
            {
            match(input,SQL_GROUP_BY,FOLLOW_SQL_GROUP_BY_in_group_by4746); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1015:22: ( column_name IDENTIFIER )+
            int cnt136=0;
            loop136:
            do {
                int alt136=2;
                int LA136_0 = input.LA(1);

                if ( (LA136_0==IDENTIFIER) ) {
                    alt136=1;
                }


                switch (alt136) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1015:23: column_name IDENTIFIER
                  {
                  pushFollow(FOLLOW_column_name_in_group_by4749);
                  column_name();

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

                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_group_by4751); if (state.failed) return ;

                  }
                  break;

              default :
                  if ( cnt136 >= 1 ) break loop136;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(136, input);
                        throw eee;
                }
                cnt136++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "order_by"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1017:1: order_by : ^( SQL_ORDER_BY ( column_name IDENTIFIER )+ ) ;
    public final void order_by() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1018:5: ( ^( SQL_ORDER_BY ( column_name IDENTIFIER )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1018:7: ^( SQL_ORDER_BY ( column_name IDENTIFIER )+ )
            {
            match(input,SQL_ORDER_BY,FOLLOW_SQL_ORDER_BY_in_order_by4771); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1018:22: ( column_name IDENTIFIER )+
            int cnt137=0;
            loop137:
            do {
                int alt137=2;
                int LA137_0 = input.LA(1);

                if ( (LA137_0==IDENTIFIER) ) {
                    alt137=1;
                }


                switch (alt137) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1018:23: column_name IDENTIFIER
                  {
                  pushFollow(FOLLOW_column_name_in_order_by4774);
                  column_name();

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

                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_order_by4776); if (state.failed) return ;

                  }
                  break;

              default :
                  if ( cnt137 >= 1 ) break loop137;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(137, input);
                        throw eee;
                }
                cnt137++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "on_session"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1021:1: on_session : ^( ON_SESSION expression ) ;
    public final void on_session() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1022:5: ( ^( ON_SESSION expression ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1022:8: ^( ON_SESSION expression )
            {
            match(input,ON_SESSION,FOLLOW_ON_SESSION_in_on_session4802); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_on_session4804);
            expression();

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

            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_variable_reference"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1026:1: sql_variable_reference : ^( SQL_VARIABLE ( expression )+ ) ;
    public final void sql_variable_reference() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1027:3: ( ^( SQL_VARIABLE ( expression )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1027:5: ^( SQL_VARIABLE ( expression )+ )
            {
            match(input,SQL_VARIABLE,FOLLOW_SQL_VARIABLE_in_sql_variable_reference4829); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1027:20: ( expression )+
            int cnt138=0;
            loop138:
            do {
                int alt138=2;
                int LA138_0 = input.LA(1);

                if ( (LA138_0==EXPR) ) {
                    alt138=1;
                }


                switch (alt138) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1027:20: expression
                  {
                  pushFollow(FOLLOW_expression_in_sql_variable_reference4831);
                  expression();

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

                  }
                  break;

              default :
                  if ( cnt138 >= 1 ) break loop138;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(138, input);
                        throw eee;
                }
                cnt138++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "column_list"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1031:1: column_list : ( MULT | column_name ( COMMA column_name )* );
    public final void column_list() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1032:3: ( MULT | column_name ( COMMA column_name )* )
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==MULT) ) {
                alt140=1;
            }
            else if ( (LA140_0==IDENTIFIER) ) {
                alt140=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 140, 0, input);

                throw nvae;

            }
            switch (alt140) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1032:5: MULT
                    {
                    match(input,MULT,FOLLOW_MULT_in_column_list4851); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1033:5: column_name ( COMMA column_name )*
                    {
                    pushFollow(FOLLOW_column_name_in_column_list4858);
                    column_name();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1033:17: ( COMMA column_name )*
                    loop139:
                    do {
                        int alt139=2;
                        int LA139_0 = input.LA(1);

                        if ( (LA139_0==COMMA) ) {
                            alt139=1;
                        }


                        switch (alt139) {
                      case 1 :
                          // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1033:18: COMMA column_name
                          {
                          match(input,COMMA,FOLLOW_COMMA_in_column_list4861); if (state.failed) return ;

                          pushFollow(FOLLOW_column_name_in_column_list4863);
                          column_name();

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

                          }
                          break;

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


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "column_name"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1036:1: column_name : IDENTIFIER ;
    public final void column_name() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1037:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1037:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_column_name4881); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "table_list"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1040:1: table_list : ^( SQL_TABLE_NAMES ( table_name )+ ) ;
    public final void table_list() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1041:3: ( ^( SQL_TABLE_NAMES ( table_name )+ ) )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1041:5: ^( SQL_TABLE_NAMES ( table_name )+ )
            {
            match(input,SQL_TABLE_NAMES,FOLLOW_SQL_TABLE_NAMES_in_table_list4895); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1041:23: ( table_name )+
            int cnt141=0;
            loop141:
            do {
                int alt141=2;
                int LA141_0 = input.LA(1);

                if ( (LA141_0==IDENTIFIER) ) {
                    alt141=1;
                }


                switch (alt141) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1041:23: table_name
                  {
                  pushFollow(FOLLOW_table_name_in_table_list4897);
                  table_name();

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

                  }
                  break;

              default :
                  if ( cnt141 >= 1 ) break loop141;
                  if (state.backtracking>0) {state.failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(141, input);
                        throw eee;
                }
                cnt141++;
            } while (true);


            match(input, Token.UP, null); if (state.failed) return ;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "table_name"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1044:1: table_name : IDENTIFIER ;
    public final void table_name() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1045:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1045:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_table_name4914); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_condition"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:1: sql_condition : sql_logical_term ( OR sql_logical_term )* ;
    public final void sql_condition() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:15: ( sql_logical_term ( OR sql_logical_term )* )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:17: sql_logical_term ( OR sql_logical_term )*
            {
            pushFollow(FOLLOW_sql_logical_term_in_sql_condition4929);
            sql_logical_term();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:34: ( OR sql_logical_term )*
            loop142:
            do {
                int alt142=2;
                int LA142_0 = input.LA(1);

                if ( (LA142_0==OR) ) {
                    int LA142_2 = input.LA(2);

                    if ( (synpred310_ForteAST()) ) {
                        alt142=1;
                    }


                }


                switch (alt142) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:36: OR sql_logical_term
                  {
                  match(input,OR,FOLLOW_OR_in_sql_condition4933); if (state.failed) return ;

                  pushFollow(FOLLOW_sql_logical_term_in_sql_condition4935);
                  sql_logical_term();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_logical_term"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1052:1: sql_logical_term : sql_logical_factor ( AND sql_logical_factor )* ;
    public final void sql_logical_term() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1053:7: ( sql_logical_factor ( AND sql_logical_factor )* )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1053:9: sql_logical_factor ( AND sql_logical_factor )*
            {
            pushFollow(FOLLOW_sql_logical_factor_in_sql_logical_term4954);
            sql_logical_factor();

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

            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1053:28: ( AND sql_logical_factor )*
            loop143:
            do {
                int alt143=2;
                int LA143_0 = input.LA(1);

                if ( (LA143_0==AND) ) {
                    int LA143_2 = input.LA(2);

                    if ( (synpred311_ForteAST()) ) {
                        alt143=1;
                    }


                }


                switch (alt143) {
              case 1 :
                  // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1053:30: AND sql_logical_factor
                  {
                  match(input,AND,FOLLOW_AND_in_sql_logical_term4958); if (state.failed) return ;

                  pushFollow(FOLLOW_sql_logical_factor_in_sql_logical_term4960);
                  sql_logical_factor();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_logical_factor"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1056:1: sql_logical_factor : ( sql_simple sql_comparison_op sql_simple | sql_simple ( NOT )? IN | sql_simple ( NOT )? IDENTIFIER | sql_simple ( NOT )? IDENTIFIER | sql_simple IS ( NOT )? IDENTIFIER | quantified_factor | NOT sql_condition | LPAREN sql_condition RPAREN );
    public final void sql_logical_factor() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1057:7: ( sql_simple sql_comparison_op sql_simple | sql_simple ( NOT )? IN | sql_simple ( NOT )? IDENTIFIER | sql_simple ( NOT )? IDENTIFIER | sql_simple IS ( NOT )? IDENTIFIER | quantified_factor | NOT sql_condition | LPAREN sql_condition RPAREN )
            int alt148=8;
            switch ( input.LA(1) ) {
            case SQL_VARIABLE:
                {
                int LA148_1 = input.LA(2);

                if ( (synpred312_ForteAST()) ) {
                    alt148=1;
                }
                else if ( (synpred314_ForteAST()) ) {
                    alt148=2;
                }
                else if ( (synpred316_ForteAST()) ) {
                    alt148=3;
                }
                else if ( (synpred318_ForteAST()) ) {
                    alt148=4;
                }
                else if ( (synpred320_ForteAST()) ) {
                    alt148=5;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 1, input);

                    throw nvae;

                }
                }
                break;
            case NOT:
                {
                int LA148_2 = input.LA(2);

                if ( (synpred312_ForteAST()) ) {
                    alt148=1;
                }
                else if ( (synpred314_ForteAST()) ) {
                    alt148=2;
                }
                else if ( (synpred316_ForteAST()) ) {
                    alt148=3;
                }
                else if ( (synpred318_ForteAST()) ) {
                    alt148=4;
                }
                else if ( (synpred320_ForteAST()) ) {
                    alt148=5;
                }
                else if ( (synpred321_ForteAST()) ) {
                    alt148=6;
                }
                else if ( (synpred322_ForteAST()) ) {
                    alt148=7;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 2, input);

                    throw nvae;

                }
                }
                break;
            case IDENTIFIER:
                {
                int LA148_3 = input.LA(2);

                if ( (synpred312_ForteAST()) ) {
                    alt148=1;
                }
                else if ( (synpred314_ForteAST()) ) {
                    alt148=2;
                }
                else if ( (synpred316_ForteAST()) ) {
                    alt148=3;
                }
                else if ( (synpred318_ForteAST()) ) {
                    alt148=4;
                }
                else if ( (synpred320_ForteAST()) ) {
                    alt148=5;
                }
                else if ( (synpred321_ForteAST()) ) {
                    alt148=6;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 3, input);

                    throw nvae;

                }
                }
                break;
            case WIDGETIDENTFIER:
                {
                int LA148_4 = input.LA(2);

                if ( (synpred312_ForteAST()) ) {
                    alt148=1;
                }
                else if ( (synpred314_ForteAST()) ) {
                    alt148=2;
                }
                else if ( (synpred316_ForteAST()) ) {
                    alt148=3;
                }
                else if ( (synpred318_ForteAST()) ) {
                    alt148=4;
                }
                else if ( (synpred320_ForteAST()) ) {
                    alt148=5;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 4, input);

                    throw nvae;

                }
                }
                break;
            case DOT:
                {
                int LA148_5 = input.LA(2);

                if ( (synpred312_ForteAST()) ) {
                    alt148=1;
                }
                else if ( (synpred314_ForteAST()) ) {
                    alt148=2;
                }
                else if ( (synpred316_ForteAST()) ) {
                    alt148=3;
                }
                else if ( (synpred318_ForteAST()) ) {
                    alt148=4;
                }
                else if ( (synpred320_ForteAST()) ) {
                    alt148=5;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 5, input);

                    throw nvae;

                }
                }
                break;
            case EQ:
            case GT:
            case GTEQ:
            case LT:
            case LTEQ:
            case NOT_EQUAL:
            case SQL_SELECT:
                {
                alt148=6;
                }
                break;
            case AND:
            case ATTRIBUTE:
            case BEGIN:
            case CASE:
            case CHANGED:
            case CLASS:
            case CONSTANT:
            case CONTINUE:
            case COPY:
            case CURSOR:
            case DO:
            case ELSE:
            case ELSEIF:
            case END:
            case ENUM:
            case EVENT:
            case EXCEPTION:
            case EXIT:
            case FALSE:
            case FOR:
            case FORWARD:
            case FROM:
            case HANDLER:
            case HAS:
            case IF:
            case IMPLEMENTS:
            case IN:
            case INCLUDES:
            case INHERITS:
            case INPUT:
            case INTERFACE:
            case IS:
            case LOOP:
            case METHOD:
            case NEW:
            case NIL:
            case OF:
            case OUTPUT:
            case POST:
            case POSTREGISTER:
            case PREREGISTER:
            case PRIVATE:
            case PROPERTY:
            case PUBLIC:
            case RAISE:
            case REGISTER:
            case RETURN:
            case SELF:
            case SERVICE:
            case START:
            case STRUCT:
            case SUPER:
            case TASK:
            case THEN:
            case TO:
            case TRANSACTION:
            case TRUE:
            case TYPEDEF:
            case UNION:
            case VIRTUAL:
            case WHEN:
            case WHERE:
            case WHILE:
            case 225:
                {
                int LA148_7 = input.LA(2);

                if ( (synpred312_ForteAST()) ) {
                    alt148=1;
                }
                else if ( (synpred314_ForteAST()) ) {
                    alt148=2;
                }
                else if ( (synpred316_ForteAST()) ) {
                    alt148=3;
                }
                else if ( (synpred318_ForteAST()) ) {
                    alt148=4;
                }
                else if ( (synpred320_ForteAST()) ) {
                    alt148=5;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 7, input);

                    throw nvae;

                }
                }
                break;
            case LPAREN:
                {
                alt148=8;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 148, 0, input);

                throw nvae;

            }

            switch (alt148) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1058:7: sql_simple sql_comparison_op sql_simple
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor4989);
                    sql_simple();

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

                    pushFollow(FOLLOW_sql_comparison_op_in_sql_logical_factor4991);
                    sql_comparison_op();

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

                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor4993);
                    sql_simple();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:10: sql_simple ( NOT )? IN
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5006);
                    sql_simple();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:21: ( NOT )?
                    int alt144=2;
                    int LA144_0 = input.LA(1);

                    if ( (LA144_0==NOT) ) {
                        alt144=1;
                    }
                    switch (alt144) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:21: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5008); if (state.failed) return ;

                            }
                            break;

                    }


                    match(input,IN,FOLLOW_IN_in_sql_logical_factor5011); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:10: sql_simple ( NOT )? IDENTIFIER
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5023);
                    sql_simple();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:21: ( NOT )?
                    int alt145=2;
                    int LA145_0 = input.LA(1);

                    if ( (LA145_0==NOT) ) {
                        alt145=1;
                    }
                    switch (alt145) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:21: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5025); if (state.failed) return ;

                            }
                            break;

                    }


                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_logical_factor5028); if (state.failed) return ;

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:10: sql_simple ( NOT )? IDENTIFIER
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5040);
                    sql_simple();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:21: ( NOT )?
                    int alt146=2;
                    int LA146_0 = input.LA(1);

                    if ( (LA146_0==NOT) ) {
                        alt146=1;
                    }
                    switch (alt146) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:21: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5042); if (state.failed) return ;

                            }
                            break;

                    }


                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_logical_factor5045); if (state.failed) return ;

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:10: sql_simple IS ( NOT )? IDENTIFIER
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5057);
                    sql_simple();

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

                    match(input,IS,FOLLOW_IS_in_sql_logical_factor5059); if (state.failed) return ;

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:24: ( NOT )?
                    int alt147=2;
                    int LA147_0 = input.LA(1);

                    if ( (LA147_0==NOT) ) {
                        alt147=1;
                    }
                    switch (alt147) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:24: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5061); if (state.failed) return ;

                            }
                            break;

                    }


                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_logical_factor5064); if (state.failed) return ;

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1063:10: quantified_factor
                    {
                    pushFollow(FOLLOW_quantified_factor_in_sql_logical_factor5076);
                    quantified_factor();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1064:10: NOT sql_condition
                    {
                    match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5089); if (state.failed) return ;

                    pushFollow(FOLLOW_sql_condition_in_sql_logical_factor5091);
                    sql_condition();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1065:10: LPAREN sql_condition RPAREN
                    {
                    match(input,LPAREN,FOLLOW_LPAREN_in_sql_logical_factor5103); if (state.failed) return ;

                    pushFollow(FOLLOW_sql_condition_in_sql_logical_factor5105);
                    sql_condition();

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

                    match(input,RPAREN,FOLLOW_RPAREN_in_sql_logical_factor5107); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_simple"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1068:1: sql_simple : ( sql_variable_reference | qualifiedName );
    public final void sql_simple() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1069:2: ( sql_variable_reference | qualifiedName )
            int alt149=2;
            int LA149_0 = input.LA(1);

            if ( (LA149_0==SQL_VARIABLE) ) {
                alt149=1;
            }
            else if ( (LA149_0==AND||LA149_0==ATTRIBUTE||LA149_0==BEGIN||LA149_0==CASE||(LA149_0 >= CHANGED && LA149_0 <= CLASS)||(LA149_0 >= CONSTANT && LA149_0 <= CURSOR)||(LA149_0 >= DO && LA149_0 <= DOT)||(LA149_0 >= ELSE && LA149_0 <= ENUM)||LA149_0==EVENT||(LA149_0 >= EXCEPTION && LA149_0 <= EXIT)||LA149_0==FALSE||LA149_0==FOR||LA149_0==FORWARD||LA149_0==FROM||(LA149_0 >= HANDLER && LA149_0 <= HAS)||(LA149_0 >= IDENTIFIER && LA149_0 <= IN)||(LA149_0 >= INCLUDES && LA149_0 <= INTERFACE)||LA149_0==IS||LA149_0==LOOP||LA149_0==METHOD||(LA149_0 >= NEW && LA149_0 <= NOT)||LA149_0==OF||LA149_0==OUTPUT||(LA149_0 >= POST && LA149_0 <= PRIVATE)||LA149_0==PROPERTY||LA149_0==PUBLIC||(LA149_0 >= RAISE && LA149_0 <= RETURN)||LA149_0==SELF||LA149_0==SERVICE||LA149_0==START||(LA149_0 >= STRUCT && LA149_0 <= SUPER)||(LA149_0 >= TASK && LA149_0 <= TRANSACTION)||LA149_0==TRUE||LA149_0==TYPEDEF||LA149_0==UNION||LA149_0==VIRTUAL||LA149_0==WHEN||(LA149_0 >= WHERE && LA149_0 <= WIDGETIDENTFIER)||LA149_0==225) ) {
                alt149=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 149, 0, input);

                throw nvae;

            }
            switch (alt149) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1069:4: sql_variable_reference
                    {
                    pushFollow(FOLLOW_sql_variable_reference_in_sql_simple5124);
                    sql_variable_reference();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1070:4: qualifiedName
                    {
                    pushFollow(FOLLOW_qualifiedName_in_sql_simple5129);
                    qualifiedName();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "quantified_factor"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1073:1: quantified_factor : ( ^( sql_comparison_op sql_simple subquery ( IDENTIFIER )? ) | ( ( NOT )? IDENTIFIER subquery ) | subquery );
    public final void quantified_factor() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1074:7: ( ^( sql_comparison_op sql_simple subquery ( IDENTIFIER )? ) | ( ( NOT )? IDENTIFIER subquery ) | subquery )
            int alt152=3;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                int LA152_1 = input.LA(2);

                if ( (LA152_1==DOWN) ) {
                    alt152=1;
                }
                else if ( (LA152_1==SQL_SELECT) ) {
                    alt152=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 152, 1, input);

                    throw nvae;

                }
                }
                break;
            case NOT:
                {
                alt152=2;
                }
                break;
            case EQ:
            case GT:
            case GTEQ:
            case LT:
            case LTEQ:
            case NOT_EQUAL:
                {
                alt152=1;
                }
                break;
            case SQL_SELECT:
                {
                alt152=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 152, 0, input);

                throw nvae;

            }

            switch (alt152) {
                case 1 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1075:7: ^( sql_comparison_op sql_simple subquery ( IDENTIFIER )? )
                    {
                    pushFollow(FOLLOW_sql_comparison_op_in_quantified_factor5153);
                    sql_comparison_op();

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

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_sql_simple_in_quantified_factor5155);
                    sql_simple();

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

                    pushFollow(FOLLOW_subquery_in_quantified_factor5157);
                    subquery();

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

                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1075:47: ( IDENTIFIER )?
                    int alt150=2;
                    int LA150_0 = input.LA(1);

                    if ( (LA150_0==IDENTIFIER) ) {
                        alt150=1;
                    }
                    switch (alt150) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1075:47: IDENTIFIER
                            {
                            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_quantified_factor5159); if (state.failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (state.failed) return ;


                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1076:9: ( ( NOT )? IDENTIFIER subquery )
                    {
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1076:9: ( ( NOT )? IDENTIFIER subquery )
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1076:11: ( NOT )? IDENTIFIER subquery
                    {
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1076:11: ( NOT )?
                    int alt151=2;
                    int LA151_0 = input.LA(1);

                    if ( (LA151_0==NOT) ) {
                        alt151=1;
                    }
                    switch (alt151) {
                        case 1 :
                            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1076:11: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_quantified_factor5173); if (state.failed) return ;

                            }
                            break;

                    }


                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_quantified_factor5176); if (state.failed) return ;

                    pushFollow(FOLLOW_subquery_in_quantified_factor5178);
                    subquery();

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

                    }


                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1077:9: subquery
                    {
                    pushFollow(FOLLOW_subquery_in_quantified_factor5191);
                    subquery();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "sql_comparison_op"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1080:1: sql_comparison_op : ( EQ | LT | GT | NOT_EQUAL | LTEQ | GTEQ | IDENTIFIER );
    public final void sql_comparison_op() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1081:7: ( EQ | LT | GT | NOT_EQUAL | LTEQ | GTEQ | IDENTIFIER )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==EQ||(input.LA(1) >= GT && input.LA(1) <= GTEQ)||input.LA(1)==IDENTIFIER||(input.LA(1) >= LT && input.LA(1) <= LTEQ)||input.LA(1)==NOT_EQUAL ) {
                input.consume();
                state.errorRecovery=false;
                state.failed=false;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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



    // $ANTLR start "subquery"
    // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1085:1: subquery : sql_select ;
    public final void subquery() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1086:5: ( sql_select )
            // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1087:9: sql_select
            {
            pushFollow(FOLLOW_sql_select_in_subquery5268);
            sql_select();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

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

    // $ANTLR start synpred299_ForteAST
    public final void synpred299_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:77: ( sql_condition )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1010:77: sql_condition
        {
        pushFollow(FOLLOW_sql_condition_in_synpred299_ForteAST4712);
        sql_condition();

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

        }

    }
    // $ANTLR end synpred299_ForteAST

    // $ANTLR start synpred310_ForteAST
    public final void synpred310_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:36: ( OR sql_logical_term )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1050:36: OR sql_logical_term
        {
        match(input,OR,FOLLOW_OR_in_synpred310_ForteAST4933); if (state.failed) return ;

        pushFollow(FOLLOW_sql_logical_term_in_synpred310_ForteAST4935);
        sql_logical_term();

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

        }

    }
    // $ANTLR end synpred310_ForteAST

    // $ANTLR start synpred311_ForteAST
    public final void synpred311_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1053:30: ( AND sql_logical_factor )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1053:30: AND sql_logical_factor
        {
        match(input,AND,FOLLOW_AND_in_synpred311_ForteAST4958); if (state.failed) return ;

        pushFollow(FOLLOW_sql_logical_factor_in_synpred311_ForteAST4960);
        sql_logical_factor();

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

        }

    }
    // $ANTLR end synpred311_ForteAST

    // $ANTLR start synpred312_ForteAST
    public final void synpred312_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1058:7: ( sql_simple sql_comparison_op sql_simple )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1058:7: sql_simple sql_comparison_op sql_simple
        {
        pushFollow(FOLLOW_sql_simple_in_synpred312_ForteAST4989);
        sql_simple();

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

        pushFollow(FOLLOW_sql_comparison_op_in_synpred312_ForteAST4991);
        sql_comparison_op();

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

        pushFollow(FOLLOW_sql_simple_in_synpred312_ForteAST4993);
        sql_simple();

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

        }

    }
    // $ANTLR end synpred312_ForteAST

    // $ANTLR start synpred314_ForteAST
    public final void synpred314_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:10: ( sql_simple ( NOT )? IN )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:10: sql_simple ( NOT )? IN
        {
        pushFollow(FOLLOW_sql_simple_in_synpred314_ForteAST5006);
        sql_simple();

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

        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:21: ( NOT )?
        int alt160=2;
        int LA160_0 = input.LA(1);

        if ( (LA160_0==NOT) ) {
            alt160=1;
        }
        switch (alt160) {
            case 1 :
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1059:21: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred314_ForteAST5008); if (state.failed) return ;

                }
                break;

        }


        match(input,IN,FOLLOW_IN_in_synpred314_ForteAST5011); if (state.failed) return ;

        }

    }
    // $ANTLR end synpred314_ForteAST

    // $ANTLR start synpred316_ForteAST
    public final void synpred316_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:10: ( sql_simple ( NOT )? IDENTIFIER )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:10: sql_simple ( NOT )? IDENTIFIER
        {
        pushFollow(FOLLOW_sql_simple_in_synpred316_ForteAST5023);
        sql_simple();

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

        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:21: ( NOT )?
        int alt161=2;
        int LA161_0 = input.LA(1);

        if ( (LA161_0==NOT) ) {
            alt161=1;
        }
        switch (alt161) {
            case 1 :
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1060:21: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred316_ForteAST5025); if (state.failed) return ;

                }
                break;

        }


        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred316_ForteAST5028); if (state.failed) return ;

        }

    }
    // $ANTLR end synpred316_ForteAST

    // $ANTLR start synpred318_ForteAST
    public final void synpred318_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:10: ( sql_simple ( NOT )? IDENTIFIER )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:10: sql_simple ( NOT )? IDENTIFIER
        {
        pushFollow(FOLLOW_sql_simple_in_synpred318_ForteAST5040);
        sql_simple();

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

        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:21: ( NOT )?
        int alt162=2;
        int LA162_0 = input.LA(1);

        if ( (LA162_0==NOT) ) {
            alt162=1;
        }
        switch (alt162) {
            case 1 :
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1061:21: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred318_ForteAST5042); if (state.failed) return ;

                }
                break;

        }


        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred318_ForteAST5045); if (state.failed) return ;

        }

    }
    // $ANTLR end synpred318_ForteAST

    // $ANTLR start synpred320_ForteAST
    public final void synpred320_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:10: ( sql_simple IS ( NOT )? IDENTIFIER )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:10: sql_simple IS ( NOT )? IDENTIFIER
        {
        pushFollow(FOLLOW_sql_simple_in_synpred320_ForteAST5057);
        sql_simple();

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

        match(input,IS,FOLLOW_IS_in_synpred320_ForteAST5059); if (state.failed) return ;

        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:24: ( NOT )?
        int alt163=2;
        int LA163_0 = input.LA(1);

        if ( (LA163_0==NOT) ) {
            alt163=1;
        }
        switch (alt163) {
            case 1 :
                // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1062:24: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred320_ForteAST5061); if (state.failed) return ;

                }
                break;

        }


        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred320_ForteAST5064); if (state.failed) return ;

        }

    }
    // $ANTLR end synpred320_ForteAST

    // $ANTLR start synpred321_ForteAST
    public final void synpred321_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1063:10: ( quantified_factor )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1063:10: quantified_factor
        {
        pushFollow(FOLLOW_quantified_factor_in_synpred321_ForteAST5076);
        quantified_factor();

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

        }

    }
    // $ANTLR end synpred321_ForteAST

    // $ANTLR start synpred322_ForteAST
    public final void synpred322_ForteAST_fragment() throws RecognitionException {
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1064:10: ( NOT sql_condition )
        // /Users/peter/Documents/workspace/Tool/src/tool/model/grammar/ForteAST.g:1064:10: NOT sql_condition
        {
        match(input,NOT,FOLLOW_NOT_in_synpred322_ForteAST5089); if (state.failed) return ;

        pushFollow(FOLLOW_sql_condition_in_synpred322_ForteAST5091);
        sql_condition();

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

        }

    }
    // $ANTLR end synpred322_ForteAST

    // Delegated rules

    public final boolean synpred299_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred299_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred314_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred314_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred318_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred318_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred321_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred321_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred311_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred311_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred316_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred316_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred322_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred322_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred312_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred312_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred320_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred320_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred310_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred310_ForteAST_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }



    public static final BitSet FOLLOW_PROJECT_in_project78 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_project82 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_planType_in_project93 = new BitSet(new long[]{0x2004000420000008L,0x00020001080001E0L,0x80000004007FC000L,0x0000010000000404L});
    public static final BitSet FOLLOW_supplierPlans_in_project99 = new BitSet(new long[]{0x2004000420000008L,0x00020001080001E0L,0x80000004007FC000L,0x0000010000000400L});
    public static final BitSet FOLLOW_forward_in_project106 = new BitSet(new long[]{0x2004000420000008L,0x00020001080001E0L,0x80000004007FC000L,0x0000010000000400L});
    public static final BitSet FOLLOW_constantDeclaration_in_project112 = new BitSet(new long[]{0x2004000420000008L,0x0002000108000000L,0x80000004007FC000L,0x0000010000000400L});
    public static final BitSet FOLLOW_cDataTypeDeclatation_in_project120 = new BitSet(new long[]{0x2004000020000008L,0x0002000108000000L,0x80000004007FC000L,0x0000010000000400L});
    public static final BitSet FOLLOW_objectTypeDeclaration_in_project127 = new BitSet(new long[]{0x2000000020000008L,0x0002000108000000L,0x00000004007FC000L,0x0000010000000000L});
    public static final BitSet FOLLOW_serviceDeclaration_in_project134 = new BitSet(new long[]{0x2000000000000008L,0x0002000008000000L,0x00000004007FC000L,0x0000010000000000L});
    public static final BitSet FOLLOW_cursorDeclaration_in_project141 = new BitSet(new long[]{0x2000000000000008L,0x0002000008000000L,0x00000000007FC000L,0x0000010000000000L});
    public static final BitSet FOLLOW_methodImplementation_in_project148 = new BitSet(new long[]{0x2000000000000008L,0x0002000008000000L,0x00000000007FC000L});
    public static final BitSet FOLLOW_project_property_in_project155 = new BitSet(new long[]{0x2000000000000008L,0x0000000008000000L,0x00000000007FC000L});
    public static final BitSet FOLLOW_include_in_project162 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
    public static final BitSet FOLLOW_classDeclaration_in_objectTypeDeclaration181 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_objectTypeDeclaration187 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_projectConstants200 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_isLibrary_in_project_property217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_project_type_in_project_property223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_compatibility_level_in_project_property229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_restricted_in_project_property235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multithreaded_in_project_property241 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_internal_in_project_property247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_library_name_in_project_property253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_starting_method_in_project_property259 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_extended_property_in_project_property265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_application_in_project_property271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PLAN_TYPE_in_planType289 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_planType291 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SUPPLIER_PLANS_in_supplierPlans313 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_supplierPlan_in_supplierPlans315 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_supplierPlan332 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PROP_IS_LIBRARY_in_isLibrary351 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_isLibrary353 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_CL_in_compatibility_level375 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_INTLITERAL_in_compatibility_level377 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_PROJ_TYPE_in_project_type396 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_project_type398 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_MULTI_THREAD_in_multithreaded417 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_multithreaded419 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_INTERNAL_in_internal435 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_internal437 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_LIBRARY_NAME_in_library_name453 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_library_name455 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_START_METHOD_in_starting_method472 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_starting_method476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_starting_method480 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_APPLICATION_in_application498 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_application500 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x4000000000000000L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_application502 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_forward_class_in_forward519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_mapped_class_in_forward525 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_interface_in_forward531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_cursor_in_forward537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FORWARD_CLASS_in_forward_class550 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_class552 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_MAPPED_CLASS_in_forward_mapped_class571 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_mapped_class573 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_INTERFACE_in_forward_interface591 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_interface593 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_CURSOR_in_forward_cursor611 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_cursor613 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_INCLUDE_in_include633 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_include636 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_include638 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UUID_in_uuid652 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_uuid654 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_property_in_declatrationTerminator672 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_cStruct_in_cDataTypeDeclatation686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cEnum_in_cDataTypeDeclatation692 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cTypeDef_in_cDataTypeDeclatation698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SERVICE_in_serviceDeclaration725 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_serviceDeclaration727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_qualifiedType_in_serviceDeclaration729 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00003FE000000000L});
    public static final BitSet FOLLOW_serviceAttribute_in_serviceDeclaration738 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00003FE000000000L,0x0000000000008000L});
    public static final BitSet FOLLOW_UUID_in_serviceDeclaration746 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceDeclaration748 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_VIS_in_serviceAttribute768 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_serviceAttribute770 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_DIALOG_in_serviceAttribute781 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_dialogType_in_serviceAttribute783 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_FAILOVER_in_serviceAttribute794 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_serviceAttribute796 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_LOADBALANCE_in_serviceAttribute807 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_serviceAttribute809 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_PATH_in_serviceAttribute820 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute822 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_EXT_MGR_in_serviceAttribute834 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute836 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_RESOURCE_in_serviceAttribute847 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute849 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_USERNAME_in_serviceAttribute860 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute862 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_PASSWORD_in_serviceAttribute873 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute875 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROPERTY_in_compound_property924 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_compound_property929 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_property_in_compound_property934 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_EXTENDED_in_extended_property958 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_property_in_extended_property960 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_PROPERTY_in_property978 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_property980 = new BitSet(new long[]{0x0000000000000000L,0x0100000200100003L,0x4000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_literal_in_property982 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROPERTY_in_property993 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_property997 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_property1001 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_INTERFACE_DECLARATION_in_interfaceDeclaration1025 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_interfaceDeclaration1027 = new BitSet(new long[]{0x20C0040408008000L,0x0011000000800000L,0x0000001000212000L,0x0000000010020080L});
    public static final BitSet FOLLOW_qualifiedType_in_interfaceDeclaration1029 = new BitSet(new long[]{0x20C0040408008000L,0x0011000000000000L,0x0000001000212000L,0x0000000010020080L});
    public static final BitSet FOLLOW_component_definition_in_interfaceDeclaration1038 = new BitSet(new long[]{0x20C0040408008000L,0x0011000000000000L,0x0000001000212000L,0x0000000010020080L});
    public static final BitSet FOLLOW_classProperties_in_interfaceDeclaration1041 = new BitSet(new long[]{0x2000040008000008L,0x0010000000000000L,0x0000001000212000L,0x0000000000000080L});
    public static final BitSet FOLLOW_CURSOR_DECLARATION_in_cursorDeclaration1061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CLASS_DECLARATION_in_classDeclaration1086 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_classDeclaration1088 = new BitSet(new long[]{0x0000000000000000L,0x0000100000800000L});
    public static final BitSet FOLLOW_isMappedClass_in_classDeclaration1102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_qualifiedType_in_classDeclaration1119 = new BitSet(new long[]{0x20C4040408008000L,0x0011000002000000L,0x0000001000212000L,0x0000000010020080L});
    public static final BitSet FOLLOW_cEnum_in_classDeclaration1132 = new BitSet(new long[]{0x20C4040408008000L,0x0011000002000000L,0x0000001000212000L,0x0000000010020080L});
    public static final BitSet FOLLOW_component_definition_in_classDeclaration1139 = new BitSet(new long[]{0x20C0040408008000L,0x0011000002000000L,0x0000001000212000L,0x0000000010020080L});
    public static final BitSet FOLLOW_IMPLEMENTS_in_classDeclaration1149 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedType_in_classDeclaration1151 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_classProperties_in_classDeclaration1161 = new BitSet(new long[]{0x2000040008000008L,0x0010000000000000L,0x4000001000212000L,0x0000000000000080L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_classDeclaration1164 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MAPPED_in_isMappedClass1181 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_attributeDeclaration_in_component_definition1194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_windowAttributeDeclaration_in_component_definition1200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_virtualAttributeDeclaration_in_component_definition1206 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventDeclaration_in_component_definition1212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_methodDeclaration_in_component_definition1218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventHandlerDeclaration_in_component_definition1224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_component_definition1230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ATTRIBUTE_DECLARATION_in_attributeDeclaration1250 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_attributeDeclaration1252 = new BitSet(new long[]{0x0C17903C06814020L,0x93802104F78C1015L,0x90000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_name_in_attributeDeclaration1254 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_attributeDeclaration1256 = new BitSet(new long[]{0x0000000000000008L,0x0000000000004000L});
    public static final BitSet FOLLOW_GENERATED_in_attributeDeclaration1259 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WINDOW_ATTRIBUTE_DECLARATION_in_windowAttributeDeclaration1276 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_windowAttributeDeclaration1278 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
    public static final BitSet FOLLOW_WIDGETIDENTFIER_in_windowAttributeDeclaration1280 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_windowAttributeDeclaration1282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
    public static final BitSet FOLLOW_GENERATED_in_windowAttributeDeclaration1285 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VIRTUAL_ATTRIBUTE_in_virtualAttributeDeclaration1298 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_virtualAttributeDeclaration1300 = new BitSet(new long[]{0x0C17903C06814020L,0x93802104F78C1015L,0x90000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_name_in_virtualAttributeDeclaration1302 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_virtualAttributeDeclaration1304 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
    public static final BitSet FOLLOW_getExpression_in_virtualAttributeDeclaration1307 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000800000000L});
    public static final BitSet FOLLOW_setExpression_in_virtualAttributeDeclaration1309 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GET_EXPRESSION_in_getExpression1325 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_getExpression1327 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SET_EXPRESSION_in_setExpression1341 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_setExpression1343 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_METHOD_DECLARATION_in_methodDeclaration1358 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_methodDeclaration1360 = new BitSet(new long[]{0x0C17B03C06814020L,0x93802104F78C1015L,0x90000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_qualifiedName_in_methodDeclaration1362 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L,0x0000000020000002L});
    public static final BitSet FOLLOW_formalParameterDecls_in_methodDeclaration1365 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_methodReturnDeclaration_in_methodDeclaration1380 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_methodCompletion_in_methodDeclaration1395 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_METHOD_COMPLETION_in_methodCompletion1410 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodCompletion1412 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodCompletion1414 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_METHOD_IMPLEMENTATION_in_methodImplementation1429 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_methodImplementation1436 = new BitSet(new long[]{0x1E20000C00900008L,0x0000008001000E00L,0x2000400028000042L,0x0000020001000000L});
    public static final BitSet FOLLOW_formalParameterDecls_in_methodImplementation1443 = new BitSet(new long[]{0x1E20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_methodReturnDeclaration_in_methodImplementation1451 = new BitSet(new long[]{0x1E20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_methodImplementation1459 = new BitSet(new long[]{0x1E20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_exceptionBlock_in_methodImplementation1467 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_HANDLER_DECLARATION_in_eventHandlerDeclaration1482 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_eventHandlerDeclaration1484 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_eventHandlerDeclaration1486 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_formalParameterDecls_in_eventHandlerDeclaration1489 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_HANDLER_IMPLEMENTATION_in_eventHandlerImplementation1505 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_eventHandlerImplementation1507 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000002L,0x0000000000200000L});
    public static final BitSet FOLLOW_formalParameterDecls_in_eventHandlerImplementation1509 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_whenEvent_in_eventHandlerImplementation1512 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_EVENT_DECLARATION_in_eventDeclaration1527 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_eventDeclaration1529 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_eventDeclaration1531 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_formalParameterDecls_in_eventDeclaration1534 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CONSTANT_in_constantDeclaration1555 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_constantDeclaration1557 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_constantDeclaration1560 = new BitSet(new long[]{0x0000000000000000L,0x0100000200100003L,0x4000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_literal_in_constantDeclaration1562 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_RESTRICTED_in_restricted1594 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_restricted1596 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_file1616 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_onOff1627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_superName1638 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_isDefault1649 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SHARED_in_classProperties1666 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1668 = new BitSet(new long[]{0x0000010000000018L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_TRANSACTIONAL_in_classProperties1676 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1678 = new BitSet(new long[]{0x0000010000000018L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_MONITORED_in_classProperties1686 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1688 = new BitSet(new long[]{0x0000010000000018L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_restricted_in_classProperties1695 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DISTRIBUTED_in_classProperties1702 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1704 = new BitSet(new long[]{0x0000010000000018L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_CLASSLINEAGE_in_classProperties1712 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classLineageEntry_in_classProperties1714 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_property_in_classProperties1721 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_extended_property_in_classProperties1727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_internal_in_classProperties1733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_superName_in_classLineageEntry1750 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_classLineageEntry1752 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ALLOW_in_classPropertyDetail1768 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_onOff_in_classPropertyDetail1770 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_OVERRIDE_in_classPropertyDetail1782 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_onOff_in_classPropertyDetail1784 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DEFAULT_in_classPropertyDetail1793 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_onOff_in_classPropertyDetail1795 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_expression_in_statement1823 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localVariableDeclaration_in_statement1829 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_statement1835 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_exitStatment_in_statement1842 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_continueStatment_in_statement1848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_postStatement_in_statement1854 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_raiseStatement_in_statement1860 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_returnStatement_in_statement1866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_whileDoStatement_in_statement1872 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forStatement_in_statement1878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_caseStatement_in_statement1884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventLoopStatement_in_statement1890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventCaseStatement_in_statement1898 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ifStatement_in_statement1904 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sqlStatement_in_statement1910 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_in_statement1916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_startTask_in_statement1923 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_EACH_in_forStatement1967 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_name_in_forStatement1969 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_IN_in_forStatement1972 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forStatement1974 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_statement_in_forStatement1977 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_FOR_COUNT_in_forStatement1989 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_name_in_forStatement1991 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_IN_in_forStatement1994 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forStatement1996 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TO_in_forStatement2000 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forStatement2002 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BY_in_forStatement2006 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forStatement2008 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_statement_in_forStatement2011 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_FOR_SQL_in_forStatement2024 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_name_in_forStatement2026 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_forStatement2028 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0100000000000000L});
    public static final BitSet FOLLOW_sql_select_in_forStatement2030 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_forStatement2032 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_EXIT_in_exitStatment2053 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_label_in_exitStatment2055 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CONTINUE_in_continueStatment2068 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_label_in_continueStatment2070 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_RETURN_in_returnStatement2083 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_returnStatement2085 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CASE_in_caseStatement2098 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_caseStatement2100 = new BitSet(new long[]{0x0000800000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_whenCase_in_caseStatement2102 = new BitSet(new long[]{0x0000800000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_elseDO_in_caseStatement2105 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WHILE_in_whileDoStatement2119 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_whileDoStatement2122 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_whileDoStatement2125 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_IF_in_ifStatement2140 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_ifStatement2142 = new BitSet(new long[]{0x1A21800C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_ifStatement2144 = new BitSet(new long[]{0x1A21800C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_elseIf_in_ifStatement2147 = new BitSet(new long[]{0x0001800000000008L});
    public static final BitSet FOLLOW_elseDO_in_ifStatement2150 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ELSEIF_in_elseIf2164 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_elseIf2166 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_elseIf2168 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_RAISE_in_raiseStatement2183 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_raiseStatement2185 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POST_in_postStatement2199 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_postStatement2201 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_LOOP_in_eventLoopStatement2213 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_preregisterStatement_in_eventLoopStatement2215 = new BitSet(new long[]{0x0000000000000008L,0x0000001000000000L,0x0000000000000080L,0x0000000000200000L});
    public static final BitSet FOLLOW_postregisterStatement_in_eventLoopStatement2218 = new BitSet(new long[]{0x0000000000000008L,0x0000001000000000L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_whenEvent_in_eventLoopStatement2221 = new BitSet(new long[]{0x0000000000000008L,0x0000001000000000L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_label_in_eventLoopStatement2224 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_CASE_in_eventCaseStatement2239 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_preregisterStatement_in_eventCaseStatement2241 = new BitSet(new long[]{0x0000000000000008L,0x0000001000000000L,0x0000000000000080L,0x0000000000200000L});
    public static final BitSet FOLLOW_postregisterStatement_in_eventCaseStatement2244 = new BitSet(new long[]{0x0000000000000008L,0x0000001000000000L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_whenEvent_in_eventCaseStatement2247 = new BitSet(new long[]{0x0000000000000008L,0x0000001000000000L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_label_in_eventCaseStatement2250 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PREREGISTER_in_preregisterStatement2265 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_registerStatement_in_preregisterStatement2267 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_POSTREGISTER_in_postregisterStatement2281 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_registerStatement_in_postregisterStatement2283 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_REGISTER_in_registerStatement2298 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_registerStatement2300 = new BitSet(new long[]{0x0000000000000088L});
    public static final BitSet FOLLOW_arguments_in_registerStatement2302 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_START_TASK_in_startTask2318 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_startTask2320 = new BitSet(new long[]{0x0000000200000008L});
    public static final BitSet FOLLOW_completion_in_startTask2323 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_COMPLETION_in_completion2340 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_set_in_completion2342 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TRANSACTION_in_completion2358 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_transType_in_completion2360 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WHEN_EXCEPTION_in_whenException2379 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_whenException2381 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_whenException2383 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_whenException2385 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_WHEN_CASE_in_whenCase2399 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_whenCase2401 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_whenCase2403 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_WHEN_EVENT_in_whenEvent2419 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_whenEvent2421 = new BitSet(new long[]{0x1A20000C00900108L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_eventArguments_in_whenEvent2423 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_whenEvent2426 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_EXCEPTION_in_exceptionBlock2442 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_whenException_in_exceptionBlock2444 = new BitSet(new long[]{0x0000800000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
    public static final BitSet FOLLOW_elseDO_in_exceptionBlock2447 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ELSE_in_elseDO2468 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_statement_in_elseDO2470 = new BitSet(new long[]{0x1A20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_RETURN_in_methodReturnDeclaration2486 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_methodReturnDeclaration2488 = new BitSet(new long[]{0x0000001000000008L});
    public static final BitSet FOLLOW_COPY_in_methodReturnDeclaration2490 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_normalParameterDecl_in_formalParameterDecls2511 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_PARAMETER_in_normalParameterDecl2534 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_paramName_in_normalParameterDecl2536 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_normalParameterDecl2538 = new BitSet(new long[]{0x0000001000000000L,0x8000000040800000L});
    public static final BitSet FOLLOW_paramModifiers_in_normalParameterDecl2540 = new BitSet(new long[]{0x1000000000000008L});
    public static final BitSet FOLLOW_expression_in_normalParameterDecl2542 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_name_in_paramName2559 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COPY_in_paramModifiers2577 = new BitSet(new long[]{0x0000000000000000L,0x8000000040800000L});
    public static final BitSet FOLLOW_INPUT_in_paramModifiers2587 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_OUTPUT_in_paramModifiers2589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INPUT_in_paramModifiers2599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OUTPUT_in_paramModifiers2610 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_paramModifiers2620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LOCAL_DECLARATION_in_localVariableDeclaration2643 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_localVariableDeclaration2645 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_localVariableDeclaration2648 = new BitSet(new long[]{0x1000000000000008L});
    public static final BitSet FOLLOW_expression_in_localVariableDeclaration2650 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LABEL_in_label2669 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_label2671 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BLOCK_in_block2691 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_transaction_in_block2693 = new BitSet(new long[]{0x1E20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_statement_in_block2698 = new BitSet(new long[]{0x1E20000C00900008L,0x0000008001000E00L,0x2000400028000040L,0x0000020001000000L});
    public static final BitSet FOLLOW_exceptionBlock_in_block2703 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TRANSACTION_in_transaction2716 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_transType_in_transaction2718 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PARENTESIZED_EXPR_in_parenthesizedExpression2740 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_parenthesizedExpression2742 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXPR_in_expression2767 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expression2769 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EQ_in_expr2794 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2796 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2798 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_OR_in_expr2810 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2812 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2814 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_XOR_in_expr2826 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2828 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2830 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_AND_in_expr2842 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2844 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2846 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2848 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_OR_in_expr2860 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2862 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2864 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_XOR_in_expr2876 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2878 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2880 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_AND_in_expr2892 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2894 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2896 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_EQUAL_in_expr2908 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2910 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2912 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LTEQ_in_expr2924 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2926 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2928 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GTEQ_in_expr2940 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2942 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2944 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GT_in_expr2956 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2958 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2960 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LT_in_expr2972 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2974 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2976 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PLUS_in_expr2988 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2990 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr2992 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MINUS_in_expr3004 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3006 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr3008 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MULT_in_expr3020 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3022 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr3024 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DIV_in_expr3036 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3038 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr3040 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MOD_in_expr3052 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3054 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr3056 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNARY_PLUS_in_expr3068 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3070 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNARY_MINUS_in_expr3082 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3084 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_in_expr3096 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3098 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CAST_EXPR_in_expr3110 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_expr3112 = new BitSet(new long[]{0x00082800110E1020L,0x472C4C0200930003L,0x6000000080000014L,0x0000040000001949L});
    public static final BitSet FOLLOW_expr_in_expr3114 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_primaryExpression_in_expr3125 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_START_TASK_in_expr3136 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3138 = new BitSet(new long[]{0x0000000200000008L});
    public static final BitSet FOLLOW_completion_in_expr3140 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DOT_in_primaryExpression3164 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3182 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primaryExpression3204 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_primaryExpression3253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primaryExpression3260 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_METHOD_CALL_in_primaryExpression3269 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3271 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_arguments_in_primaryExpression3273 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_INDEX_in_primaryExpression3282 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3285 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_expression_in_primaryExpression3287 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_literal_in_primaryExpression3295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_newExpression_in_primaryExpression3303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_reservedPrefix_in_primaryExpression3311 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CLASS_CONSTRUCTOR_CALL_in_newExpression3333 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_arguments_in_newExpression3335 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARGUMENT_LIST_in_arguments3352 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_argumentList_in_arguments3354 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARGUMENT_LIST_EVENT_in_eventArguments3369 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_argumentEventList_in_eventArguments3371 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_argument_in_argumentList3386 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_argumentEvent_in_argumentEventList3399 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ARGUMENT_in_argument3414 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_argument3416 = new BitSet(new long[]{0x0C17903C06814028L,0x93802104F78C1015L,0x90000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_name_in_argument3418 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARGUMENT_in_argumentEvent3433 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_evParamName_in_argumentEvent3435 = new BitSet(new long[]{0x0C17903C06814028L,0x93802104F78C1015L,0x90000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_name_in_argumentEvent3437 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_qualifiedType_in_type3540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arrayType_in_type3549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_pointerType_in_type3559 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_222_in_type3568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedType3591 = new BitSet(new long[]{0x0000200000000002L});
    public static final BitSet FOLLOW_DOT_in_qualifiedType3594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedType3596 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_name_in_qualifiedName3617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_qualifiedName3628 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedName3630 = new BitSet(new long[]{0x0C17903C06814020L,0x93802104F78C1015L,0x90000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_name_in_qualifiedName3632 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_TYPE_in_arrayType3685 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedType_in_arrayType3687 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_CSTYLE_in_arrayDeclarator3707 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_C_ARRAY_RANGE_in_arrayDeclarator3709 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POINTER_TYPE_in_pointerType3729 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_pointerType3731 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_transType3748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRUCT_in_cStruct3798 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cStruct3800 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cStruct3803 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_cStruct3805 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_ENUM_in_cEnum3820 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cEnum3822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_cEnumMember_in_cEnum3824 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cEnumMember3839 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_literal_in_cEnumMember3841 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TYPEDEF_in_cTypeDef3856 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cTypeDef3858 = new BitSet(new long[]{0x0000000000002000L,0x0000000000800000L,0x0000000000000020L,0x0000000040000000L});
    public static final BitSet FOLLOW_type_in_cTypeDef3860 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_array3875 = new BitSet(new long[]{0x0000000000000202L});
    public static final BitSet FOLLOW_arrayDeclarator_in_array3880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_reservedWord_in_name3897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_name3903 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WIDGETIDENTFIER_in_name3910 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_in_sql_statement4429 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x015D800000000000L});
    public static final BitSet FOLLOW_sql_cursor_in_sql_statement4436 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_delete_in_sql_statement4442 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_execute_immediate_in_sql_statement4448 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_execute_procedure_in_sql_statement4454 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_fetch_cursor_in_sql_statement4460 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_insert_in_sql_statement4466 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_select_in_sql_statement4472 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_set_in_sql_statement4478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_CURSOR_in_sql_cursor4497 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_cursor4499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_sql_cursor_identifier_in_sql_cursor4501 = new BitSet(new long[]{0x0000000000000088L,0x2000000000000000L});
    public static final BitSet FOLLOW_arguments_in_sql_cursor4503 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L});
    public static final BitSet FOLLOW_on_session_in_sql_cursor4506 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_cursor_identifier4522 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_DELETE_in_sql_delete4538 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_sql_delete4540 = new BitSet(new long[]{0x0C1FB03C06814028L,0xB7802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_condition_in_sql_delete4542 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L});
    public static final BitSet FOLLOW_on_session_in_sql_delete4545 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_EXECUTE_IMMEDIATE_in_sql_execute_immediate4563 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_set_in_sql_execute_immediate4565 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L});
    public static final BitSet FOLLOW_on_session_in_sql_execute_immediate4573 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_EXECUTE_PROCEDURE_in_sql_execute_procedure4592 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_execute_procedure4594 = new BitSet(new long[]{0x0000000000000088L,0x2000000000000000L});
    public static final BitSet FOLLOW_arguments_in_sql_execute_procedure4596 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L});
    public static final BitSet FOLLOW_on_session_in_sql_execute_procedure4599 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_CURSOR_FETCH_in_sql_fetch_cursor4620 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_fetch_cursor4622 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0802000000000000L});
    public static final BitSet FOLLOW_sql_cursor_next_in_sql_fetch_cursor4624 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_fetch_cursor4627 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_CURSOR_NEXT_in_sql_cursor_next4644 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_cursor_next4646 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_INSERT_in_sql_insert4666 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_sql_insert4668 = new BitSet(new long[]{0x0000000000000000L,0x0020000000800000L});
    public static final BitSet FOLLOW_column_list_in_sql_insert4670 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_insert4673 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L});
    public static final BitSet FOLLOW_on_session_in_sql_insert4675 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_SELECT_in_sql_select4700 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_select4702 = new BitSet(new long[]{0x0000000000000000L,0x0020000000800000L});
    public static final BitSet FOLLOW_column_list_in_sql_select4705 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0A00000000000000L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_select4707 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0200000000000000L});
    public static final BitSet FOLLOW_table_list_in_sql_select4710 = new BitSet(new long[]{0x0C1FB03C06814028L,0xB7802F04F78F1015L,0x99A00004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_condition_in_sql_select4712 = new BitSet(new long[]{0x0C1FB03C06814028L,0xB7802F04F78F1015L,0x99A00004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_group_by_in_sql_select4715 = new BitSet(new long[]{0x0C1FB03C06814028L,0xB7802F04F78F1015L,0x99800004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_condition_in_sql_select4718 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L,0x0080000000000000L});
    public static final BitSet FOLLOW_order_by_in_sql_select4721 = new BitSet(new long[]{0x0000000000000008L,0x2000000000000000L});
    public static final BitSet FOLLOW_on_session_in_sql_select4724 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_GROUP_BY_in_group_by4746 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_column_name_in_group_by4749 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_group_by4751 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_SQL_ORDER_BY_in_order_by4771 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_column_name_in_order_by4774 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_order_by4776 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_ON_SESSION_in_on_session4802 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_on_session4804 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_VARIABLE_in_sql_variable_reference4829 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_sql_variable_reference4831 = new BitSet(new long[]{0x1000000000000008L});
    public static final BitSet FOLLOW_MULT_in_column_list4851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_column_name_in_column_list4858 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_COMMA_in_column_list4861 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_column_name_in_column_list4863 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_column_name4881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_TABLE_NAMES_in_table_list4895 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_table_list4897 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_table_name4914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_logical_term_in_sql_condition4929 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
    public static final BitSet FOLLOW_OR_in_sql_condition4933 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_logical_term_in_sql_condition4935 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
    public static final BitSet FOLLOW_sql_logical_factor_in_sql_logical_term4954 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_AND_in_sql_logical_term4958 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_logical_factor_in_sql_logical_term4960 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor4989 = new BitSet(new long[]{0x0008000000000000L,0x04000C0000830000L});
    public static final BitSet FOLLOW_sql_comparison_op_in_sql_logical_factor4991 = new BitSet(new long[]{0x0C17B03C06814020L,0x93802104F78C1015L,0x98000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor4993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5006 = new BitSet(new long[]{0x0000000000000000L,0x0200000004000000L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5008 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_IN_in_sql_logical_factor5011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5023 = new BitSet(new long[]{0x0000000000000000L,0x0200000000800000L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_logical_factor5028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5040 = new BitSet(new long[]{0x0000000000000000L,0x0200000000800000L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_logical_factor5045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5057 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
    public static final BitSet FOLLOW_IS_in_sql_logical_factor5059 = new BitSet(new long[]{0x0000000000000000L,0x0200000000800000L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_logical_factor5064 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quantified_factor_in_sql_logical_factor5076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5089 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_condition_in_sql_logical_factor5091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_sql_logical_factor5103 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_condition_in_sql_logical_factor5105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_RPAREN_in_sql_logical_factor5107 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_simple5124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualifiedName_in_sql_simple5129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_comparison_op_in_quantified_factor5153 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_sql_simple_in_quantified_factor5155 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0100000000000000L});
    public static final BitSet FOLLOW_subquery_in_quantified_factor5157 = new BitSet(new long[]{0x0000000000000008L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_quantified_factor5159 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_in_quantified_factor5173 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_quantified_factor5176 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0100000000000000L});
    public static final BitSet FOLLOW_subquery_in_quantified_factor5178 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_subquery_in_quantified_factor5191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_select_in_subquery5268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_condition_in_synpred299_ForteAST4712 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OR_in_synpred310_ForteAST4933 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_logical_term_in_synpred310_ForteAST4935 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_AND_in_synpred311_ForteAST4958 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_logical_factor_in_synpred311_ForteAST4960 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred312_ForteAST4989 = new BitSet(new long[]{0x0008000000000000L,0x04000C0000830000L});
    public static final BitSet FOLLOW_sql_comparison_op_in_synpred312_ForteAST4991 = new BitSet(new long[]{0x0C17B03C06814020L,0x93802104F78C1015L,0x98000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_simple_in_synpred312_ForteAST4993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred314_ForteAST5006 = new BitSet(new long[]{0x0000000000000000L,0x0200000004000000L});
    public static final BitSet FOLLOW_NOT_in_synpred314_ForteAST5008 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_IN_in_synpred314_ForteAST5011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred316_ForteAST5023 = new BitSet(new long[]{0x0000000000000000L,0x0200000000800000L});
    public static final BitSet FOLLOW_NOT_in_synpred316_ForteAST5025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred316_ForteAST5028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred318_ForteAST5040 = new BitSet(new long[]{0x0000000000000000L,0x0200000000800000L});
    public static final BitSet FOLLOW_NOT_in_synpred318_ForteAST5042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred318_ForteAST5045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred320_ForteAST5057 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
    public static final BitSet FOLLOW_IS_in_synpred320_ForteAST5059 = new BitSet(new long[]{0x0000000000000000L,0x0200000000800000L});
    public static final BitSet FOLLOW_NOT_in_synpred320_ForteAST5061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred320_ForteAST5064 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quantified_factor_in_synpred321_ForteAST5076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_synpred322_ForteAST5089 = new BitSet(new long[]{0x0C1FB03C06814020L,0x97802F04F78F1015L,0x99000004B88023C0L,0x0000000203894579L});
    public static final BitSet FOLLOW_sql_condition_in_synpred322_ForteAST5091 = new BitSet(new long[]{0x0000000000000002L});

}
TOP

Related Classes of tool.model.grammar.ForteAST$booleanLiteral_return

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.
script>