Package tool.model.grammar

Source Code of tool.model.grammar.ForteAST

// $ANTLR 3.2 Sep 23, 2009 12:02:23 /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g 2012-06-21 20:35:19

package tool.model.grammar;
import tool.model.ToolPlan;
import tool.model.ToolForwardDeclaration;
import tool.model.ToolClass;
import tool.model.ToolInterface;
import tool.model.ToolType;
import tool.model.ToolConstant;
import tool.model.ToolProperty;
import tool.model.ToolServiceObject;
import tool.model.ToolAttribute;
import tool.model.ToolVirtualAttribute;
import tool.model.ToolEvent;
import tool.model.ToolMethod;
import tool.model.ToolEventHandler;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;

import java.util.Map;

import java.util.EmptyStackException;


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

    // delegates
    // 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/ToolModel/src/tool/model/grammar/ForteAST.g"; }


      private IProject eclipseProject;
      private IResource sourceResource;
      protected ToolType currentType;
     
      public ForteAST(IResource sourceResource, TreeNodeStream input){
        super(input);
        this.eclipseProject = sourceResource.getProject();
        this.sourceResource = sourceResource;
      }
     


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


    // $ANTLR start "project"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:50:1: project returns [ToolPlan newPlan] : ^( PROJECT projName= IDENTIFIER planType ( supplierPlans )? ( forward )* ( constantDeclaration[true] )* ( forward )* ( 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/ToolModel/src/tool/model/grammar/ForteAST.g:61:3: ( ^( PROJECT projName= IDENTIFIER planType ( supplierPlans )? ( forward )* ( constantDeclaration[true] )* ( forward )* ( cDataTypeDeclatation[$projName.text] )* ( objectTypeDeclaration[$projName.text] )* ( serviceDeclaration[$projName.text] )* ( cursorDeclaration[$projName.text] )* ( methodImplementation )* ( project_property )* ( include )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:61:5: ^( PROJECT projName= IDENTIFIER planType ( supplierPlans )? ( forward )* ( constantDeclaration[true] )* ( forward )* ( cDataTypeDeclatation[$projName.text] )* ( objectTypeDeclaration[$projName.text] )* ( serviceDeclaration[$projName.text] )* ( cursorDeclaration[$projName.text] )* ( methodImplementation )* ( project_property )* ( include )* )
            {
            match(input,PROJECT,FOLLOW_PROJECT_in_project80); if (state.failed) return newPlan;

            match(input, Token.DOWN, null); if (state.failed) return newPlan;
            projName=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_project84); if (state.failed) return newPlan;
            if ( state.backtracking==0 ) {

                  System.out.println("=== ToolPlan: " + (projName!=null?projName.getText():null));
                  ((project_scope)project_stack.peek()).currentPlan = new ToolPlan((projName!=null?projName.getText():null));
                  ((project_scope)project_stack.peek()).currentPlan.setFile((IFile)this.sourceResource);
                  //addPlanToProject(((project_scope)project_stack.peek()).currentPlan);
                 
            }
            pushFollow(FOLLOW_planType_in_project95);
            planType();

            state._fsp--;
            if (state.failed) return newPlan;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:69: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/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: supplierPlans
                    {
                    pushFollow(FOLLOW_supplierPlans_in_project101);
                    supplierPlans();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:70:4: ( forward )*
            loop2:
            do {
                int alt2=2;
                alt2 = dfa2.predict(input);
                switch (alt2) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: forward
                  {
                  pushFollow(FOLLOW_forward_in_project108);
                  forward();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:71: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/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: constantDeclaration[true]
                  {
                  pushFollow(FOLLOW_constantDeclaration_in_project114);
                  constantDeclaration(true);

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:72:4: ( forward )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( ((LA4_0>=FORWARD_CLASS && LA4_0<=FORWARD_STRUCT)) ) {
                    alt4=1;
                }


                switch (alt4) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: forward
                  {
                  pushFollow(FOLLOW_forward_in_project122);
                  forward();

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

                  }
                  break;

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

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

                if ( (LA5_0==STRUCT||(LA5_0>=ENUM && LA5_0<=TYPEDEF)) ) {
                    alt5=1;
                }


                switch (alt5) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: cDataTypeDeclatation[$projName.text]
                  {
                  pushFollow(FOLLOW_cDataTypeDeclatation_in_project128);
                  cDataTypeDeclatation((projName!=null?projName.getText():null));

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

                  }
                  break;

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

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

                if ( ((LA6_0>=CLASS_DECLARATION && LA6_0<=INTERFACE_DECLARATION)) ) {
                    alt6=1;
                }


                switch (alt6) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: objectTypeDeclaration[$projName.text]
                  {
                  pushFollow(FOLLOW_objectTypeDeclaration_in_project135);
                  objectTypeDeclaration((projName!=null?projName.getText():null));

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

                  }
                  break;

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

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

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


                switch (alt7) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: serviceDeclaration[$projName.text]
                  {
                  pushFollow(FOLLOW_serviceDeclaration_in_project142);
                  serviceDeclaration((projName!=null?projName.getText():null));

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:76:4: ( cursorDeclaration[$projName.text] )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

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


                switch (alt8) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: cursorDeclaration[$projName.text]
                  {
                  pushFollow(FOLLOW_cursorDeclaration_in_project149);
                  cursorDeclaration((projName!=null?projName.getText():null));

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:77:4: ( methodImplementation )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==METHOD_IMPLEMENTATION) ) {
                    alt9=1;
                }


                switch (alt9) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: methodImplementation
                  {
                  pushFollow(FOLLOW_methodImplementation_in_project156);
                  methodImplementation();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:78:5: ( project_property )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>=PROP_CL && LA10_0<=PROP_APPLICATION)||LA10_0==EXTENDED) ) {
                    alt10=1;
                }


                switch (alt10) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: project_property
                  {
                  pushFollow(FOLLOW_project_property_in_project163);
                  project_property();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:80:4: ( include )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==INCLUDE) ) {
                    alt11=1;
                }


                switch (alt11) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: include
                  {
                  pushFollow(FOLLOW_include_in_project170);
                  include();

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

                  }
                  break;

              default :
                  break loop11;
                }
            } 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.getSupplierPlans().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 {
            project_stack.pop();
        }
        return newPlan;
    }
    // $ANTLR end "project"


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

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

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:85:4: classDeclaration
                    {
                    pushFollow(FOLLOW_classDeclaration_in_objectTypeDeclaration189);
                    classDeclaration();

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

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

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "objectTypeDeclaration"


    // $ANTLR start "projectConstants"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:89:1: projectConstants : ( constantDeclaration[true] )* ;
    public final void projectConstants() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:90:2: ( ( constantDeclaration[true] )* )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:90:4: ( constantDeclaration[true] )*
            {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:90:4: ( constantDeclaration[true] )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==CONSTANT) ) {
                    alt13=1;
                }


                switch (alt13) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: constantDeclaration[true]
                  {
                  pushFollow(FOLLOW_constantDeclaration_in_projectConstants207);
                  constantDeclaration(true);

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "projectConstants"


    // $ANTLR start "project_property"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:94: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/ToolModel/src/tool/model/grammar/ForteAST.g:95:3: ( isLibrary | project_type | compatibility_level | restricted | multithreaded | internal | library_name | starting_method | extended_property | application )
            int alt14=10;
            switch ( input.LA(1) ) {
            case PROP_IS_LIBRARY:
                {
                alt14=1;
                }
                break;
            case PROP_PROJ_TYPE:
                {
                alt14=2;
                }
                break;
            case PROP_CL:
                {
                alt14=3;
                }
                break;
            case PROP_RESTRICTED:
                {
                alt14=4;
                }
                break;
            case PROP_MULTI_THREAD:
                {
                alt14=5;
                }
                break;
            case PROP_INTERNAL:
                {
                alt14=6;
                }
                break;
            case PROP_LIBRARY_NAME:
                {
                alt14=7;
                }
                break;
            case PROP_START_METHOD:
                {
                alt14=8;
                }
                break;
            case EXTENDED:
                {
                alt14=9;
                }
                break;
            case PROP_APPLICATION:
                {
                alt14=10;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }

            switch (alt14) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:95:5: isLibrary
                    {
                    pushFollow(FOLLOW_isLibrary_in_project_property224);
                    isLibrary();

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

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

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

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

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

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

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:99:5: multithreaded
                    {
                    pushFollow(FOLLOW_multithreaded_in_project_property248);
                    multithreaded();

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

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

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

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

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

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

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

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

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

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

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "project_property"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER1=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_planType298); 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 {
        }
        return ;
    }
    // $ANTLR end "planType"


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:116:22: ( supplierPlan )+
            int cnt15=0;
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==IDENTIFIER) ) {
                    alt15=1;
                }


                switch (alt15) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: supplierPlan
                  {
                  pushFollow(FOLLOW_supplierPlan_in_supplierPlans322);
                  supplierPlan();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "supplierPlans"


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

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:120:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:120:5: IDENTIFIER
            {
            IDENTIFIER2=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_supplierPlan339); 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 {
        }
        return ;
    }
    // $ANTLR end "supplierPlan"


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


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_booleanLiteral_in_isLibrary360);
            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 {
        }
        return ;
    }
    // $ANTLR end "isLibrary"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            INTLITERAL4=(CommonTree)match(input,INTLITERAL,FOLLOW_INTLITERAL_in_compatibility_level384); 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 {
        }
        return ;
    }
    // $ANTLR end "compatibility_level"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER5=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_project_type405); 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 {
        }
        return ;
    }
    // $ANTLR end "project_type"


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


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_booleanLiteral_in_multithreaded426);
            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 {
        }
        return ;
    }
    // $ANTLR end "multithreaded"


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


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_booleanLiteral_in_internal444);
            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 {
        }
        return ;
    }
    // $ANTLR end "internal"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            STRINGLITERAL8=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_library_name462); 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 {
        }
        return ;
    }
    // $ANTLR end "library_name"


    // $ANTLR start "starting_method"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:169: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/ToolModel/src/tool/model/grammar/ForteAST.g:170:2: ( ^( PROP_START_METHOD c= IDENTIFIER m= IDENTIFIER ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:170:4: ^( PROP_START_METHOD c= IDENTIFIER m= IDENTIFIER )
            {
            match(input,PROP_START_METHOD,FOLLOW_PROP_START_METHOD_in_starting_method479); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            c=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_starting_method483); if (state.failed) return ;
            m=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_starting_method487); 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 {
        }
        return ;
    }
    // $ANTLR end "starting_method"


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

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "application"


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

                throw nvae;
            }

            switch (alt16) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:183:3: forward_class
                    {
                    pushFollow(FOLLOW_forward_class_in_forward526);
                    forward_class();

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

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

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

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

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

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

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:187:5: forward_struct
                    {
                    pushFollow(FOLLOW_forward_struct_in_forward550);
                    forward_struct();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "forward"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER9=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_class565); 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 {
        }
        return ;
    }
    // $ANTLR end "forward_class"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER10=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_mapped_class586); 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 {
        }
        return ;
    }
    // $ANTLR end "forward_mapped_class"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER11=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_interface606); 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 {
        }
        return ;
    }
    // $ANTLR end "forward_interface"


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

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

            match(input, Token.DOWN, null); if (state.failed) return ;
            IDENTIFIER12=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_forward_cursor626); 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 {
        }
        return ;
    }
    // $ANTLR end "forward_cursor"


    // $ANTLR start "forward_struct"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:216:1: forward_struct : ^( FORWARD_STRUCT IDENTIFIER ) ;
    public final void forward_struct() throws RecognitionException {
        CommonTree IDENTIFIER13=null;

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:217:3: ( ^( FORWARD_STRUCT IDENTIFIER ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:217:5: ^( FORWARD_STRUCT IDENTIFIER )
            {
            match(input,FORWARD_STRUCT,FOLLOW_FORWARD_STRUCT_in_forward_struct646); if (state.failed) return ;

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

            match(input, Token.UP, null); if (state.failed) return ;
            if ( state.backtracking==0 ) {

                  ((project_scope)project_stack.peek()).currentPlan.addForwardDeclaration((IDENTIFIER13!=null?IDENTIFIER13.getText():null), ToolForwardDeclaration.Kind.STRUCT);
                 
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "forward_struct"


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

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "include"


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

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

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

            match(input, Token.UP, null); if (state.failed) return ;
            if ( state.backtracking==0 ) {
              
                  String wholeString = (STRINGLITERAL14!=null?STRINGLITERAL14.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 {
        }
        return ;
    }
    // $ANTLR end "uuid"


    // $ANTLR start "declatrationTerminator"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:238:1: declatrationTerminator : ( property )* ;
    public final void declatrationTerminator() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:239:2: ( ( property )* )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:239:4: ( property )*
            {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:239:4: ( property )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==PROPERTY) ) {
                    alt17=1;
                }


                switch (alt17) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: property
                  {
                  pushFollow(FOLLOW_property_in_declatrationTerminator708);
                  property();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "declatrationTerminator"


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

                throw nvae;
            }

            switch (alt18) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:243:5: cStruct
                    {
                    pushFollow(FOLLOW_cStruct_in_cDataTypeDeclatation722);
                    cStruct();

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

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

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

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

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "cDataTypeDeclatation"


    // $ANTLR start "serviceDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:252: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 IDENTIFIER15=null;
        CommonTree STRINGLITERAL17=null;
        ForteAST.qualifiedType_return qualifiedType16 = null;


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

            match(input, Token.DOWN, null); if (state.failed) return so;
            IDENTIFIER15=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_serviceDeclaration763); if (state.failed) return so;
            pushFollow(FOLLOW_qualifiedType_in_serviceDeclaration765);
            qualifiedType16=qualifiedType();

            state._fsp--;
            if (state.failed) return so;
            if ( state.backtracking==0 ) {

                  so = new ToolServiceObject((IDENTIFIER15!=null?IDENTIFIER15.getText():null));
                  so.setType((qualifiedType16!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(qualifiedType16.start),
                input.getTreeAdaptor().getTokenStopIndex(qualifiedType16.start))):null));
                  so.setPlanName(projectName);
                 
            }
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:264:3: ( serviceAttribute[so] )+
            int cnt19=0;
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( ((LA19_0>=SO_VIS && LA19_0<=SO_PASSWORD)) ) {
                    alt19=1;
                }


                switch (alt19) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: serviceAttribute[so]
                  {
                  pushFollow(FOLLOW_serviceAttribute_in_serviceDeclaration774);
                  serviceAttribute(so);

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

                  }
                  break;

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

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

            match(input, Token.DOWN, null); if (state.failed) return so;
            STRINGLITERAL17=(CommonTree)match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_serviceDeclaration784); if (state.failed) return so;
            if ( state.backtracking==0 ) {
              so.setUuid(so.stripQuotes((STRINGLITERAL17!=null?STRINGLITERAL17.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 {
        }
        return so;
    }
    // $ANTLR end "serviceDeclaration"


    // $ANTLR start "serviceAttribute"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:269: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 IDENTIFIER18=null;
        CommonTree STRINGLITERAL22=null;
        CommonTree STRINGLITERAL23=null;
        CommonTree STRINGLITERAL24=null;
        CommonTree STRINGLITERAL25=null;
        CommonTree STRINGLITERAL26=null;
        ForteAST.dialogType_return dialogType19 = null;

        ForteAST.booleanLiteral_return booleanLiteral20 = null;

        ForteAST.booleanLiteral_return booleanLiteral21 = null;


        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:270: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 alt20=9;
            switch ( input.LA(1) ) {
            case SO_VIS:
                {
                alt20=1;
                }
                break;
            case SO_DIALOG:
                {
                alt20=2;
                }
                break;
            case SO_FAILOVER:
                {
                alt20=3;
                }
                break;
            case SO_LOADBALANCE:
                {
                alt20=4;
                }
                break;
            case SO_PATH:
                {
                alt20=5;
                }
                break;
            case SO_EXT_MGR:
                {
                alt20=6;
                }
                break;
            case SO_RESOURCE:
                {
                alt20=7;
                }
                break;
            case SO_USERNAME:
                {
                alt20=8;
                }
                break;
            case SO_PASSWORD:
                {
                alt20=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }

            switch (alt20) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:270:4: ^( SO_VIS IDENTIFIER )
                    {
                    match(input,SO_VIS,FOLLOW_SO_VIS_in_serviceAttribute804); if (state.failed) return ;

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setVisability((IDENTIFIER18!=null?IDENTIFIER18.getText():null));
                    }

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

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setDialogDuration((dialogType19!=null?(input.getTokenStream().toString(
                        input.getTreeAdaptor().getTokenStartIndex(dialogType19.start),
                        input.getTreeAdaptor().getTokenStopIndex(dialogType19.start))):null));
                    }

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

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setFailOver((booleanLiteral20!=null?(input.getTokenStream().toString(
                        input.getTreeAdaptor().getTokenStartIndex(booleanLiteral20.start),
                        input.getTreeAdaptor().getTokenStopIndex(booleanLiteral20.start))):null));
                    }

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

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setLoadBalance((booleanLiteral21!=null?(input.getTokenStream().toString(
                        input.getTreeAdaptor().getTokenStartIndex(booleanLiteral21.start),
                        input.getTreeAdaptor().getTokenStopIndex(booleanLiteral21.start))):null));
                    }

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setSearchPath(so.stripQuotes((STRINGLITERAL22!=null?STRINGLITERAL22.getText():null)));
                    }

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setExternalManager(so.stripQuotes((STRINGLITERAL23!=null?STRINGLITERAL23.getText():null)));
                    }

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setResourceName(so.stripQuotes((STRINGLITERAL24!=null?STRINGLITERAL24.getText():null)));
                    }

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setUserName(so.stripQuotes((STRINGLITERAL25!=null?STRINGLITERAL25.getText():null)));
                    }

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    if ( state.backtracking==0 ) {
                      so.setUserPassword(so.stripQuotes((STRINGLITERAL26!=null?STRINGLITERAL26.getText():null)));
                    }

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "serviceAttribute"

    public static class dialogType_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "dialogType"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:290: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/ToolModel/src/tool/model/grammar/ForteAST.g:290:12: ( IDENTIFIER | TRANSACTION )
            // /Users/peter/Documents/workspace/ToolModel/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 {
        }
        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/ToolModel/src/tool/model/grammar/ForteAST.g:299: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/ToolModel/src/tool/model/grammar/ForteAST.g:303:2: ( ^( PROPERTY ^(id= IDENTIFIER (prop= property )+ ) ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:303:4: ^( PROPERTY ^(id= IDENTIFIER (prop= property )+ ) )
            {
            match(input,PROPERTY,FOLLOW_PROPERTY_in_compound_property960); if (state.failed) return retval;

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

            match(input, Token.DOWN, null); if (state.failed) return retval;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:303:31: (prop= 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/ToolModel/src/tool/model/grammar/ForteAST.g:303:32: prop= property
                  {
                  pushFollow(FOLLOW_property_in_compound_property970);
                  prop=property();

                  state._fsp--;
                  if (state.failed) return retval;
                  if ( state.backtracking==0 ) {
                     retval.props.add(prop);
                  }

                  }
                  break;

              default :
                  if ( cnt21 >= 1 ) break loop21;
                  if (state.backtracking>0) {state.failed=true; return retval;}
                        EarlyExitException eee =
                            new EarlyExitException(21, input);
                        throw eee;
                }
                cnt21++;
            } 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 {
        }
        return retval;
    }
    // $ANTLR end "compound_property"


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:310:15: ( property )+
            int cnt22=0;
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==PROPERTY) ) {
                    alt22=1;
                }


                switch (alt22) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: property
                  {
                  pushFollow(FOLLOW_property_in_extended_property996);
                  property();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "extended_property"


    // $ANTLR start "property"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:313: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 IDENTIFIER27=null;
        ForteAST.literal_return literal28 = null;


        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:314:2: ( ^( PROPERTY IDENTIFIER literal ) | ^( PROPERTY id1= IDENTIFIER id2= IDENTIFIER ) )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==PROPERTY) ) {
                int LA23_1 = input.LA(2);

                if ( (LA23_1==DOWN) ) {
                    int LA23_2 = input.LA(3);

                    if ( (LA23_2==IDENTIFIER) ) {
                        int LA23_3 = input.LA(4);

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

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

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

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

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:314:4: ^( PROPERTY IDENTIFIER literal )
                    {
                    match(input,PROPERTY,FOLLOW_PROPERTY_in_property1014); if (state.failed) return toolProp;

                    match(input, Token.DOWN, null); if (state.failed) return toolProp;
                    IDENTIFIER27=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_property1016); if (state.failed) return toolProp;
                    pushFollow(FOLLOW_literal_in_property1018);
                    literal28=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((IDENTIFIER27!=null?IDENTIFIER27.getText():null));
                          toolProp.setValue((literal28!=null?(input.getTokenStream().toString(
                        input.getTreeAdaptor().getTokenStartIndex(literal28.start),
                        input.getTreeAdaptor().getTokenStopIndex(literal28.start))):null));
                         
                    }

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

                    match(input, Token.DOWN, null); if (state.failed) return toolProp;
                    id1=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_property1033); if (state.failed) return toolProp;
                    id2=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_property1037); 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 {
        }
        return toolProp;
    }
    // $ANTLR end "property"


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_interfaceDeclaration1063); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:334:39: ( qualifiedType )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==IDENTIFIER) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: qualifiedType
                    {
                    pushFollow(FOLLOW_qualifiedType_in_interfaceDeclaration1065);
                    qualifiedType();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:335:6: ( component_definition )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==METHOD_DECLARATION||(LA25_0>=EVENT_DECLARATION && LA25_0<=EVENT_HANDLER_DECLARATION)||(LA25_0>=VIRTUAL_ATTRIBUTE && LA25_0<=WINDOW_ATTRIBUTE_DECLARATION)||LA25_0==CONSTANT) ) {
                    alt25=1;
                }


                switch (alt25) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: component_definition
                  {
                  pushFollow(FOLLOW_component_definition_in_interfaceDeclaration1074);
                  component_definition();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:335:28: ( classProperties )+
            int cnt26=0;
            loop26:
            do {
                int alt26=2;
                int LA26_0 = input.LA(1);

                if ( (LA26_0==PROP_RESTRICTED||LA26_0==PROP_INTERNAL||(LA26_0>=DISTRIBUTED && LA26_0<=SHARED)||(LA26_0>=TRANSACTIONAL && LA26_0<=CLASSLINEAGE)||LA26_0==PROPERTY||LA26_0==EXTENDED) ) {
                    alt26=1;
                }


                switch (alt26) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classProperties
                  {
                  pushFollow(FOLLOW_classProperties_in_interfaceDeclaration1077);
                  classProperties();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "interfaceDeclaration"


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "cursorDeclaration"

    public static class classDeclaration_return extends TreeRuleReturnScope {
        public ToolClass toolClass;
    };

    // $ANTLR start "classDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:349:1: classDeclaration returns [ToolClass toolClass] : ^( CLASS_DECLARATION IDENTIFIER ( isMappedClass )? superT= qualifiedType ( cEnum )* ( component_definition )* ( ^( IMPLEMENTS qualifiedType ) )* ( classProperties )+ ( STRINGLITERAL )? ) ;
    public final ForteAST.classDeclaration_return classDeclaration() throws RecognitionException {
        ForteAST.classDeclaration_return retval = new ForteAST.classDeclaration_return();
        retval.start = input.LT(1);

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

        ForteAST.isMappedClass_return isMappedClass30 = null;


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

            match(input, Token.DOWN, null); if (state.failed) return retval;
            IDENTIFIER29=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_classDeclaration1128); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
              
                    retval.toolClass = new ToolClass((IDENTIFIER29!=null?IDENTIFIER29.getText():null));
                    retval.toolClass.setToolName(retval.toolClass.xlateName((IDENTIFIER29!=null?IDENTIFIER29.getText():null)));
                    currentType = retval.toolClass;
                 
            }
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:364:5: ( isMappedClass )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==MAPPED) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:364:6: isMappedClass
                    {
                    pushFollow(FOLLOW_isMappedClass_in_classDeclaration1142);
                    isMappedClass30=isMappedClass();

                    state._fsp--;
                    if (state.failed) return retval;
                    if ( state.backtracking==0 ) {
                       retval.toolClass.setMapped(Boolean.parseBoolean((isMappedClass30!=null?(input.getTokenStream().toString(
                        input.getTreeAdaptor().getTokenStartIndex(isMappedClass30.start),
                        input.getTreeAdaptor().getTokenStopIndex(isMappedClass30.start))):null)));
                    }

                    }
                    break;

            }

            pushFollow(FOLLOW_qualifiedType_in_classDeclaration1164);
            superT=qualifiedType();

            state._fsp--;
            if (state.failed) return retval;
            if ( state.backtracking==0 ) {
               retval.toolClass.setSuperClass(retval.toolClass.xlateName((superT!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(superT.start),
                input.getTreeAdaptor().getTokenStopIndex(superT.start))):null)));
            }
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:369:5: ( cEnum )*
            loop28:
            do {
                int alt28=2;
                int LA28_0 = input.LA(1);

                if ( (LA28_0==ENUM) ) {
                    alt28=1;
                }


                switch (alt28) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: cEnum
                  {
                  pushFollow(FOLLOW_cEnum_in_classDeclaration1177);
                  cEnum();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:370:5: ( component_definition )*
            loop29:
            do {
                int alt29=2;
                int LA29_0 = input.LA(1);

                if ( (LA29_0==METHOD_DECLARATION||(LA29_0>=EVENT_DECLARATION && LA29_0<=EVENT_HANDLER_DECLARATION)||(LA29_0>=VIRTUAL_ATTRIBUTE && LA29_0<=WINDOW_ATTRIBUTE_DECLARATION)||LA29_0==CONSTANT) ) {
                    alt29=1;
                }


                switch (alt29) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: component_definition
                  {
                  pushFollow(FOLLOW_component_definition_in_classDeclaration1184);
                  component_definition();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:371:5: ( ^( IMPLEMENTS qualifiedType ) )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==IMPLEMENTS) ) {
                    alt30=1;
                }


                switch (alt30) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:371:6: ^( IMPLEMENTS qualifiedType )
                  {
                  match(input,IMPLEMENTS,FOLLOW_IMPLEMENTS_in_classDeclaration1194); if (state.failed) return retval;

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

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

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:372:5: ( classProperties )+
            int cnt31=0;
            loop31:
            do {
                int alt31=2;
                int LA31_0 = input.LA(1);

                if ( (LA31_0==PROP_RESTRICTED||LA31_0==PROP_INTERNAL||(LA31_0>=DISTRIBUTED && LA31_0<=SHARED)||(LA31_0>=TRANSACTIONAL && LA31_0<=CLASSLINEAGE)||LA31_0==PROPERTY||LA31_0==EXTENDED) ) {
                    alt31=1;
                }


                switch (alt31) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classProperties
                  {
                  pushFollow(FOLLOW_classProperties_in_classDeclaration1206);
                  classProperties();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:372:22: ( STRINGLITERAL )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==STRINGLITERAL) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: STRINGLITERAL
                    {
                    match(input,STRINGLITERAL,FOLLOW_STRINGLITERAL_in_classDeclaration1209); if (state.failed) return retval;

                    }
                    break;

            }


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

            }

            if ( state.backtracking==0 ) {

                retval.toolClass.source = input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(retval.start),
                input.getTreeAdaptor().getTokenStopIndex(retval.start));
                if (!project_stack.isEmpty()){
                  retval.toolClass.setParent(((project_scope)project_stack.peek()).currentPlan);
                  ((project_scope)project_stack.peek()).currentPlan.addClass(retval.toolClass);
                  }
               
               
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "classDeclaration"

    public static class isMappedClass_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "isMappedClass"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:376: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/ToolModel/src/tool/model/grammar/ForteAST.g:377:3: ( MAPPED )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:377:5: MAPPED
            {
            match(input,MAPPED,FOLLOW_MAPPED_in_isMappedClass1231); if (state.failed) return retval;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "isMappedClass"


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

                throw nvae;
            }

            switch (alt33) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:381:5: attributeDeclaration
                    {
                    pushFollow(FOLLOW_attributeDeclaration_in_component_definition1244);
                    attributeDeclaration();

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

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

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

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

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

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

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:385:5: methodDeclaration
                    {
                    pushFollow(FOLLOW_methodDeclaration_in_component_definition1268);
                    methodDeclaration();

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

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

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

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

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "component_definition"


    // $ANTLR start "attributeDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:394:1: attributeDeclaration returns [ToolAttribute att] : ^( ATTRIBUTE_DECLARATION modifier name type ( GENERATED )? ) ;
    public final ToolAttribute attributeDeclaration() throws RecognitionException {
        ToolAttribute att = null;

        ForteAST.name_return name31 = null;

        ForteAST.type_return type32 = null;

        ForteAST.modifier_return modifier33 = null;


        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:395:3: ( ^( ATTRIBUTE_DECLARATION modifier name type ( GENERATED )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:395:5: ^( ATTRIBUTE_DECLARATION modifier name type ( GENERATED )? )
            {
            match(input,ATTRIBUTE_DECLARATION,FOLLOW_ATTRIBUTE_DECLARATION_in_attributeDeclaration1303); if (state.failed) return att;

            match(input, Token.DOWN, null); if (state.failed) return att;
            pushFollow(FOLLOW_modifier_in_attributeDeclaration1305);
            modifier33=modifier();

            state._fsp--;
            if (state.failed) return att;
            pushFollow(FOLLOW_name_in_attributeDeclaration1307);
            name31=name();

            state._fsp--;
            if (state.failed) return att;
            pushFollow(FOLLOW_type_in_attributeDeclaration1309);
            type32=type();

            state._fsp--;
            if (state.failed) return att;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:395:49: ( GENERATED )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==GENERATED) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: GENERATED
                    {
                    match(input,GENERATED,FOLLOW_GENERATED_in_attributeDeclaration1312); if (state.failed) return att;

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return att;
            if ( state.backtracking==0 ) {

                att = new ToolAttribute(currentType);
                att.setToolName((name31!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(name31.start),
                input.getTreeAdaptor().getTokenStopIndex(name31.start))):null));
                att.setType((type32!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(type32.start),
                input.getTreeAdaptor().getTokenStopIndex(type32.start))):null));
                att.setVisability((modifier33!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(modifier33.start),
                input.getTreeAdaptor().getTokenStopIndex(modifier33.start))):null));
                if (currentType instanceof ToolClass)
                    ((ToolClass)currentType).add(att);
               
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return att;
    }
    // $ANTLR end "attributeDeclaration"


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

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

            state._fsp--;
            if (state.failed) return ;
            match(input,WIDGETIDENTFIER,FOLLOW_WIDGETIDENTFIER_in_windowAttributeDeclaration1337); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_windowAttributeDeclaration1339);
            type();

            state._fsp--;
            if (state.failed) return ;
            match(input,GENERATED,FOLLOW_GENERATED_in_windowAttributeDeclaration1342); if (state.failed) return ;

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "windowAttributeDeclaration"


    // $ANTLR start "virtualAttributeDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:410:1: virtualAttributeDeclaration returns [ToolVirtualAttribute att] : ^( VIRTUAL_ATTRIBUTE modifier name type getExpression ( setExpression )? ) ;
    public final ToolVirtualAttribute virtualAttributeDeclaration() throws RecognitionException {
        ToolVirtualAttribute att = null;

        ForteAST.name_return name34 = null;

        ForteAST.type_return type35 = null;

        ForteAST.modifier_return modifier36 = null;

        ForteAST.getExpression_return getExpression37 = null;

        ForteAST.setExpression_return setExpression38 = null;


        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:411:2: ( ^( VIRTUAL_ATTRIBUTE modifier name type getExpression ( setExpression )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:411:4: ^( VIRTUAL_ATTRIBUTE modifier name type getExpression ( setExpression )? )
            {
            match(input,VIRTUAL_ATTRIBUTE,FOLLOW_VIRTUAL_ATTRIBUTE_in_virtualAttributeDeclaration1359); if (state.failed) return att;

            match(input, Token.DOWN, null); if (state.failed) return att;
            pushFollow(FOLLOW_modifier_in_virtualAttributeDeclaration1361);
            modifier36=modifier();

            state._fsp--;
            if (state.failed) return att;
            pushFollow(FOLLOW_name_in_virtualAttributeDeclaration1363);
            name34=name();

            state._fsp--;
            if (state.failed) return att;
            pushFollow(FOLLOW_type_in_virtualAttributeDeclaration1365);
            type35=type();

            state._fsp--;
            if (state.failed) return att;
            pushFollow(FOLLOW_getExpression_in_virtualAttributeDeclaration1368);
            getExpression37=getExpression();

            state._fsp--;
            if (state.failed) return att;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:411:58: ( setExpression )?
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==SET_EXPRESSION) ) {
                alt35=1;
            }
            switch (alt35) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: setExpression
                    {
                    pushFollow(FOLLOW_setExpression_in_virtualAttributeDeclaration1370);
                    setExpression38=setExpression();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return att;
            if ( state.backtracking==0 ) {

                att = new ToolVirtualAttribute(currentType);
                att.setToolName((name34!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(name34.start),
                input.getTreeAdaptor().getTokenStopIndex(name34.start))):null));
                att.setType((type35!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(type35.start),
                input.getTreeAdaptor().getTokenStopIndex(type35.start))):null));
                att.setVisability((modifier36!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(modifier36.start),
                input.getTreeAdaptor().getTokenStopIndex(modifier36.start))):null));
                att.setGetExpression((getExpression37!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(getExpression37.start),
                input.getTreeAdaptor().getTokenStopIndex(getExpression37.start))):null));
                att.setSetExpression((setExpression38!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(setExpression38.start),
                input.getTreeAdaptor().getTokenStopIndex(setExpression38.start))):null));
                if (currentType instanceof ToolClass)
                    ((ToolClass)currentType).add(att);
                else if (currentType instanceof ToolInterface)
                    ((ToolInterface)currentType).add(att);
               
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return att;
    }
    // $ANTLR end "virtualAttributeDeclaration"

    public static class getExpression_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "getExpression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:426:1: getExpression : ^( GET_EXPRESSION expression ) ;
    public final ForteAST.getExpression_return getExpression() throws RecognitionException {
        ForteAST.getExpression_return retval = new ForteAST.getExpression_return();
        retval.start = input.LT(1);

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:427:2: ( ^( GET_EXPRESSION expression ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:427:4: ^( GET_EXPRESSION expression )
            {
            match(input,GET_EXPRESSION,FOLLOW_GET_EXPRESSION_in_getExpression1389); if (state.failed) return retval;

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

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "getExpression"

    public static class setExpression_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "setExpression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:430:1: setExpression : ^( SET_EXPRESSION expression ) ;
    public final ForteAST.setExpression_return setExpression() throws RecognitionException {
        ForteAST.setExpression_return retval = new ForteAST.setExpression_return();
        retval.start = input.LT(1);

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:431:2: ( ^( SET_EXPRESSION expression ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:431:4: ^( SET_EXPRESSION expression )
            {
            match(input,SET_EXPRESSION,FOLLOW_SET_EXPRESSION_in_setExpression1405); if (state.failed) return retval;

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

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "setExpression"

    protected static class methodDeclaration_scope {
        ToolMethod currentMethod;
    }
    protected Stack methodDeclaration_stack = new Stack();


    // $ANTLR start "methodDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:435:1: methodDeclaration returns [ToolMethod toolMethod] : ^( METHOD_DECLARATION modifier qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( methodCompletion )? ) ;
    public final ToolMethod methodDeclaration() throws RecognitionException {
        methodDeclaration_stack.push(new methodDeclaration_scope());
        ToolMethod toolMethod = null;

        ForteAST.qualifiedName_return qualifiedName39 = null;

        ForteAST.modifier_return modifier40 = null;


        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:442:2: ( ^( METHOD_DECLARATION modifier qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( methodCompletion )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:442:4: ^( METHOD_DECLARATION modifier qualifiedName ( formalParameterDecls )? ( methodReturnDeclaration )? ( methodCompletion )? )
            {
            match(input,METHOD_DECLARATION,FOLLOW_METHOD_DECLARATION_in_methodDeclaration1436); if (state.failed) return toolMethod;

            if ( state.backtracking==0 ) {

                ((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod = new ToolMethod(currentType);
               
            }

            match(input, Token.DOWN, null); if (state.failed) return toolMethod;
            pushFollow(FOLLOW_modifier_in_methodDeclaration1443);
            modifier40=modifier();

            state._fsp--;
            if (state.failed) return toolMethod;
            pushFollow(FOLLOW_qualifiedName_in_methodDeclaration1445);
            qualifiedName39=qualifiedName();

            state._fsp--;
            if (state.failed) return toolMethod;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:446:26: ( formalParameterDecls )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==PARAMETER) ) {
                alt36=1;
            }
            switch (alt36) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_methodDeclaration1448);
                    formalParameterDecls();

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

                    }
                    break;

            }

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

            if ( (LA37_0==RETURN) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: methodReturnDeclaration
                    {
                    pushFollow(FOLLOW_methodReturnDeclaration_in_methodDeclaration1463);
                    methodReturnDeclaration();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:448:12: ( methodCompletion )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==METHOD_COMPLETION) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: methodCompletion
                    {
                    pushFollow(FOLLOW_methodCompletion_in_methodDeclaration1478);
                    methodCompletion();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return toolMethod;
            if ( state.backtracking==0 ) {

                  ((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod.setToolName((qualifiedName39!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(qualifiedName39.start),
                input.getTreeAdaptor().getTokenStopIndex(qualifiedName39.start))):null));
                  ((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod.setVisability((modifier40!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(modifier40.start),
                input.getTreeAdaptor().getTokenStopIndex(modifier40.start))):null));
                  if (currentType instanceof ToolClass)
                    ((ToolClass)currentType).add(((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod);
                  else if (currentType instanceof ToolInterface)
                    ((ToolInterface)currentType).add(((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod);
               
            }

            }

            if ( state.backtracking==0 ) {

                toolMethod = ((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod;
               
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            methodDeclaration_stack.pop();
        }
        return toolMethod;
    }
    // $ANTLR end "methodDeclaration"


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

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodCompletion1499); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:460:35: ( IDENTIFIER )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==IDENTIFIER) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodCompletion1501); if (state.failed) return ;

                    }
                    break;

            }


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "methodCompletion"


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

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:466:5: ( formalParameterDecls )?
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==PARAMETER) ) {
                alt40=1;
            }
            switch (alt40) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_methodImplementation1530);
                    formalParameterDecls();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:467:5: ( methodReturnDeclaration )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==RETURN) ) {
                int LA41_1 = input.LA(2);

                if ( (LA41_1==DOWN) ) {
                    int LA41_3 = input.LA(3);

                    if ( (LA41_3==ARRAY_TYPE||LA41_3==POINTER_TYPE||LA41_3==IDENTIFIER||LA41_3==233) ) {
                        alt41=1;
                    }
                }
            }
            switch (alt41) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: methodReturnDeclaration
                    {
                    pushFollow(FOLLOW_methodReturnDeclaration_in_methodImplementation1538);
                    methodReturnDeclaration();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:468:5: ( statement )*
            loop42:
            do {
                int alt42=2;
                int LA42_0 = input.LA(1);

                if ( ((LA42_0>=EXPR && LA42_0<=FOR_SQL)||(LA42_0>=EVENT_CASE && LA42_0<=EVENT_LOOP)||LA42_0==BLOCK||LA42_0==RETURN||LA42_0==CONSTANT||(LA42_0>=EXIT && LA42_0<=IF)||(LA42_0>=RAISE && LA42_0<=POST)) ) {
                    alt42=1;
                }


                switch (alt42) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_methodImplementation1546);
                  statement();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:469:5: ( exceptionBlock )?
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==EXCEPTION) ) {
                alt43=1;
            }
            switch (alt43) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: exceptionBlock
                    {
                    pushFollow(FOLLOW_exceptionBlock_in_methodImplementation1554);
                    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 {
        }
        return ;
    }
    // $ANTLR end "methodImplementation"


    // $ANTLR start "eventHandlerDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:472:1: eventHandlerDeclaration returns [ToolEventHandler eventHandler] : ^( EVENT_HANDLER_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) ;
    public final ToolEventHandler eventHandlerDeclaration() throws RecognitionException {
        ToolEventHandler eventHandler = null;

        CommonTree IDENTIFIER41=null;

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:473:2: ( ^( EVENT_HANDLER_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:473:4: ^( EVENT_HANDLER_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? )
            {
            match(input,EVENT_HANDLER_DECLARATION,FOLLOW_EVENT_HANDLER_DECLARATION_in_eventHandlerDeclaration1573); if (state.failed) return eventHandler;

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

            state._fsp--;
            if (state.failed) return eventHandler;
            IDENTIFIER41=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_eventHandlerDeclaration1577); if (state.failed) return eventHandler;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:473:53: ( formalParameterDecls )?
            int alt44=2;
            int LA44_0 = input.LA(1);

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

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return eventHandler;
            if ( state.backtracking==0 ) {

                eventHandler = new ToolEventHandler(currentType);
                eventHandler.setToolName((IDENTIFIER41!=null?IDENTIFIER41.getText():null));
                if (currentType instanceof ToolClass)
                  ((ToolClass)currentType).add(eventHandler);
               
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return eventHandler;
    }
    // $ANTLR end "eventHandlerDeclaration"


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

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:483:50: ( formalParameterDecls )?
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==PARAMETER) ) {
                alt45=1;
            }
            switch (alt45) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_eventHandlerImplementation1603);
                    formalParameterDecls();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:483:72: ( whenEvent )*
            loop46:
            do {
                int alt46=2;
                int LA46_0 = input.LA(1);

                if ( (LA46_0==WHEN_EVENT) ) {
                    alt46=1;
                }


                switch (alt46) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: whenEvent
                  {
                  pushFollow(FOLLOW_whenEvent_in_eventHandlerImplementation1606);
                  whenEvent();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "eventHandlerImplementation"


    // $ANTLR start "eventDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:486:1: eventDeclaration returns [ToolEvent event] : ^( EVENT_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) ;
    public final ToolEvent eventDeclaration() throws RecognitionException {
        ToolEvent event = null;

        CommonTree IDENTIFIER42=null;

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:487:2: ( ^( EVENT_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:487:4: ^( EVENT_DECLARATION modifier IDENTIFIER ( formalParameterDecls )? )
            {
            match(input,EVENT_DECLARATION,FOLLOW_EVENT_DECLARATION_in_eventDeclaration1625); if (state.failed) return event;

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

            state._fsp--;
            if (state.failed) return event;
            IDENTIFIER42=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_eventDeclaration1629); if (state.failed) return event;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:487:45: ( formalParameterDecls )?
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==PARAMETER) ) {
                alt47=1;
            }
            switch (alt47) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_eventDeclaration1632);
                    formalParameterDecls();

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

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return event;
            if ( state.backtracking==0 ) {

                event = new ToolEvent(currentType);
                event.setToolName((IDENTIFIER42!=null?IDENTIFIER42.getText():null));
                if (currentType instanceof ToolClass)
                  ((ToolClass)currentType).add(event);
                else if (currentType instanceof ToolInterface)
                  ((ToolInterface)currentType).add(event);
               
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return event;
    }
    // $ANTLR end "eventDeclaration"


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

        CommonTree IDENTIFIER43=null;
        ForteAST.literal_return literal44 = null;

        ForteAST.modifier_return modifier45 = null;


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

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

            if ( ((LA48_0>=PRIVATE && LA48_0<=PUBLIC)||(LA48_0>=231 && LA48_0<=232)) ) {
                alt48=1;
            }
            switch (alt48) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: modifier
                    {
                    pushFollow(FOLLOW_modifier_in_constantDeclaration1658);
                    modifier45=modifier();

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

                    }
                    break;

            }

            IDENTIFIER43=(CommonTree)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_constantDeclaration1661); if (state.failed) return toolConst;
            pushFollow(FOLLOW_literal_in_constantDeclaration1663);
            literal44=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(
                            (IDENTIFIER43!=null?IDENTIFIER43.getText():null)//Constant ID
                            (literal44!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(literal44.start),
                input.getTreeAdaptor().getTokenStopIndex(literal44.start))):null),    //Constant Value
                            (modifier45!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(modifier45.start),
                input.getTreeAdaptor().getTokenStopIndex(modifier45.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 {
        }
        return toolConst;
    }
    // $ANTLR end "constantDeclaration"


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

        ForteAST.booleanLiteral_return booleanLiteral46 = null;


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

            match(input, Token.DOWN, null); if (state.failed) return rest;
            pushFollow(FOLLOW_booleanLiteral_in_restricted1697);
            booleanLiteral46=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((booleanLiteral46!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(booleanLiteral46.start),
                input.getTreeAdaptor().getTokenStopIndex(booleanLiteral46.start))):null));
                 
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return rest;
    }
    // $ANTLR end "restricted"


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "file"


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "onOff"


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "superName"


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "isDefault"


    // $ANTLR start "classProperties"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:543: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/ToolModel/src/tool/model/grammar/ForteAST.g:544:2: ( ^( SHARED ( classPropertyDetail )+ ) | ^( TRANSACTIONAL ( classPropertyDetail )+ ) | ^( MONITORED ( classPropertyDetail )+ ) | restricted | ^( DISTRIBUTED ( classPropertyDetail )+ ) | ^( CLASSLINEAGE ( classLineageEntry )+ ) | property | extended_property | internal )
            int alt54=9;
            switch ( input.LA(1) ) {
            case SHARED:
                {
                alt54=1;
                }
                break;
            case TRANSACTIONAL:
                {
                alt54=2;
                }
                break;
            case MONITORED:
                {
                alt54=3;
                }
                break;
            case PROP_RESTRICTED:
                {
                alt54=4;
                }
                break;
            case DISTRIBUTED:
                {
                alt54=5;
                }
                break;
            case CLASSLINEAGE:
                {
                alt54=6;
                }
                break;
            case PROPERTY:
                {
                alt54=7;
                }
                break;
            case EXTENDED:
                {
                alt54=8;
                }
                break;
            case PROP_INTERNAL:
                {
                alt54=9;
                }
                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/ToolModel/src/tool/model/grammar/ForteAST.g:544:4: ^( SHARED ( classPropertyDetail )+ )
                    {
                    match(input,SHARED,FOLLOW_SHARED_in_classProperties1767); if (state.failed) return ;

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

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


                        switch (alt49) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1769);
                          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 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:545:4: ^( TRANSACTIONAL ( classPropertyDetail )+ )
                    {
                    match(input,TRANSACTIONAL,FOLLOW_TRANSACTIONAL_in_classProperties1777); if (state.failed) return ;

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

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


                        switch (alt50) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1779);
                          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 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:546:4: ^( MONITORED ( classPropertyDetail )+ )
                    {
                    match(input,MONITORED,FOLLOW_MONITORED_in_classProperties1787); if (state.failed) return ;

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

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


                        switch (alt51) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1789);
                          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 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:547:4: restricted
                    {
                    pushFollow(FOLLOW_restricted_in_classProperties1796);
                    restricted();

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

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

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

                        if ( ((LA52_0>=OVERRIDE && LA52_0<=ALLOW)||LA52_0==DEFAULT) ) {
                            alt52=1;
                        }


                        switch (alt52) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classPropertyDetail
                          {
                          pushFollow(FOLLOW_classPropertyDetail_in_classProperties1805);
                          classPropertyDetail();

                          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 6 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:549:4: ^( CLASSLINEAGE ( classLineageEntry )+ )
                    {
                    match(input,CLASSLINEAGE,FOLLOW_CLASSLINEAGE_in_classProperties1813); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:549:19: ( classLineageEntry )+
                    int cnt53=0;
                    loop53:
                    do {
                        int alt53=2;
                        int LA53_0 = input.LA(1);

                        if ( (LA53_0==IDENTIFIER) ) {
                            alt53=1;
                        }


                        switch (alt53) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: classLineageEntry
                          {
                          pushFollow(FOLLOW_classLineageEntry_in_classProperties1815);
                          classLineageEntry();

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

                          }
                          break;

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


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

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

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

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

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

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

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "classProperties"


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

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

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "classLineageEntry"


    // $ANTLR start "classPropertyDetail"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:559:1: classPropertyDetail : ( ^( ALLOW onOff ) | ^( OVERRIDE onOff ) | ^( DEFAULT onOff ) );
    public final void classPropertyDetail() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:560:2: ( ^( ALLOW onOff ) | ^( OVERRIDE onOff ) | ^( DEFAULT onOff ) )
            int alt55=3;
            switch ( input.LA(1) ) {
            case ALLOW:
                {
                alt55=1;
                }
                break;
            case OVERRIDE:
                {
                alt55=2;
                }
                break;
            case DEFAULT:
                {
                alt55=3;
                }
                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/ToolModel/src/tool/model/grammar/ForteAST.g:560:4: ^( ALLOW onOff )
                    {
                    match(input,ALLOW,FOLLOW_ALLOW_in_classPropertyDetail1869); if (state.failed) return ;

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

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

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

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

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

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

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

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

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_onOff_in_classPropertyDetail1896);
                    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 {
        }
        return ;
    }
    // $ANTLR end "classPropertyDetail"


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

                throw nvae;
            }

            switch (alt56) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:572:7: expression
                    {
                    pushFollow(FOLLOW_expression_in_statement1924);
                    expression();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:573:5: constantDeclaration[false]
                    {
                    pushFollow(FOLLOW_constantDeclaration_in_statement1930);
                    constantDeclaration(false);

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:574:5: exitStatment
                    {
                    pushFollow(FOLLOW_exitStatment_in_statement1937);
                    exitStatment();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:575:5: continueStatment
                    {
                    pushFollow(FOLLOW_continueStatment_in_statement1943);
                    continueStatment();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:576:5: postStatement
                    {
                    pushFollow(FOLLOW_postStatement_in_statement1949);
                    postStatement();

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:577:5: raiseStatement
                    {
                    pushFollow(FOLLOW_raiseStatement_in_statement1955);
                    raiseStatement();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:578:5: returnStatement
                    {
                    pushFollow(FOLLOW_returnStatement_in_statement1961);
                    returnStatement();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:579:5: whileDoStatement
                    {
                    pushFollow(FOLLOW_whileDoStatement_in_statement1967);
                    whileDoStatement();

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

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:580:5: forStatement
                    {
                    pushFollow(FOLLOW_forStatement_in_statement1973);
                    forStatement();

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

                    }
                    break;
                case 10 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:581:5: caseStatement
                    {
                    pushFollow(FOLLOW_caseStatement_in_statement1979);
                    caseStatement();

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

                    }
                    break;
                case 11 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:582:5: eventLoopStatement
                    {
                    pushFollow(FOLLOW_eventLoopStatement_in_statement1985);
                    eventLoopStatement();

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

                    }
                    break;
                case 12 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:583:7: eventCaseStatement
                    {
                    pushFollow(FOLLOW_eventCaseStatement_in_statement1993);
                    eventCaseStatement();

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

                    }
                    break;
                case 13 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:584:5: ifStatement
                    {
                    pushFollow(FOLLOW_ifStatement_in_statement1999);
                    ifStatement();

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

                    }
                    break;
                case 14 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:585:5: block
                    {
                    pushFollow(FOLLOW_block_in_statement2005);
                    block();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "statement"


    // $ANTLR start "forStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:589:1: forStatement : ( ^( FOR_EACH name ^( IN expression ) ( statement )* ) | ^( FOR_COUNT name expression expression ( expression )? ( statement )* ) | ^( FOR_SQL ( nameType )+ ( statement )* ) );
    public final void forStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:590:5: ( ^( FOR_EACH name ^( IN expression ) ( statement )* ) | ^( FOR_COUNT name expression expression ( expression )? ( statement )* ) | ^( FOR_SQL ( nameType )+ ( statement )* ) )
            int alt62=3;
            switch ( input.LA(1) ) {
            case FOR_EACH:
                {
                alt62=1;
                }
                break;
            case FOR_COUNT:
                {
                alt62=2;
                }
                break;
            case FOR_SQL:
                {
                alt62=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 62, 0, input);

                throw nvae;
            }

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

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

                    state._fsp--;
                    if (state.failed) return ;
                    match(input,IN,FOLLOW_IN_in_forStatement2036); if (state.failed) return ;

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

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

                    match(input, Token.UP, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:590:42: ( statement )*
                    loop57:
                    do {
                        int alt57=2;
                        int LA57_0 = input.LA(1);

                        if ( ((LA57_0>=EXPR && LA57_0<=FOR_SQL)||(LA57_0>=EVENT_CASE && LA57_0<=EVENT_LOOP)||LA57_0==BLOCK||LA57_0==RETURN||LA57_0==CONSTANT||(LA57_0>=EXIT && LA57_0<=IF)||(LA57_0>=RAISE && LA57_0<=POST)) ) {
                            alt57=1;
                        }


                        switch (alt57) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                          {
                          pushFollow(FOLLOW_statement_in_forStatement2041);
                          statement();

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

                          }
                          break;

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


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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:591:8: ^( FOR_COUNT name expression expression ( expression )? ( statement )* )
                    {
                    match(input,FOR_COUNT,FOLLOW_FOR_COUNT_in_forStatement2053); if (state.failed) return ;

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

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

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

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:591:47: ( expression )?
                    int alt58=2;
                    alt58 = dfa58.predict(input);
                    switch (alt58) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: expression
                            {
                            pushFollow(FOLLOW_expression_in_forStatement2061);
                            expression();

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

                            }
                            break;

                    }

                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:591:59: ( statement )*
                    loop59:
                    do {
                        int alt59=2;
                        int LA59_0 = input.LA(1);

                        if ( ((LA59_0>=EXPR && LA59_0<=FOR_SQL)||(LA59_0>=EVENT_CASE && LA59_0<=EVENT_LOOP)||LA59_0==BLOCK||LA59_0==RETURN||LA59_0==CONSTANT||(LA59_0>=EXIT && LA59_0<=IF)||(LA59_0>=RAISE && LA59_0<=POST)) ) {
                            alt59=1;
                        }


                        switch (alt59) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                          {
                          pushFollow(FOLLOW_statement_in_forStatement2064);
                          statement();

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

                          }
                          break;

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


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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:592:9: ^( FOR_SQL ( nameType )+ ( statement )* )
                    {
                    match(input,FOR_SQL,FOLLOW_FOR_SQL_in_forStatement2077); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:592:19: ( nameType )+
                    int cnt60=0;
                    loop60:
                    do {
                        int alt60=2;
                        int LA60_0 = input.LA(1);

                        if ( (LA60_0==NAME_TYPE) ) {
                            alt60=1;
                        }


                        switch (alt60) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: nameType
                          {
                          pushFollow(FOLLOW_nameType_in_forStatement2079);
                          nameType();

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

                          }
                          break;

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

                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:592:29: ( statement )*
                    loop61:
                    do {
                        int alt61=2;
                        int LA61_0 = input.LA(1);

                        if ( ((LA61_0>=EXPR && LA61_0<=FOR_SQL)||(LA61_0>=EVENT_CASE && LA61_0<=EVENT_LOOP)||LA61_0==BLOCK||LA61_0==RETURN||LA61_0==CONSTANT||(LA61_0>=EXIT && LA61_0<=IF)||(LA61_0>=RAISE && LA61_0<=POST)) ) {
                            alt61=1;
                        }


                        switch (alt61) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                          {
                          pushFollow(FOLLOW_statement_in_forStatement2082);
                          statement();

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

                          }
                          break;

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


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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "forStatement"


    // $ANTLR start "nameType"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:596:1: nameType : ^( NAME_TYPE name type ) ;
    public final void nameType() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:597:3: ( ^( NAME_TYPE name type ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:597:5: ^( NAME_TYPE name type )
            {
            match(input,NAME_TYPE,FOLLOW_NAME_TYPE_in_nameType2102); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FOLLOW_type_in_nameType2106);
            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 {
        }
        return ;
    }
    // $ANTLR end "nameType"


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

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

                if ( (LA63_0==LABEL) ) {
                    alt63=1;
                }
                switch (alt63) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: label
                        {
                        pushFollow(FOLLOW_label_in_exitStatment2126);
                        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 {
        }
        return ;
    }
    // $ANTLR end "exitStatment"


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

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

                if ( (LA64_0==LABEL) ) {
                    alt64=1;
                }
                switch (alt64) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: label
                        {
                        pushFollow(FOLLOW_label_in_continueStatment2141);
                        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 {
        }
        return ;
    }
    // $ANTLR end "continueStatment"


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

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

                if ( (LA65_0==EXPR) ) {
                    alt65=1;
                }
                switch (alt65) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: expression
                        {
                        pushFollow(FOLLOW_expression_in_returnStatement2156);
                        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 {
        }
        return ;
    }
    // $ANTLR end "returnStatement"


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

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:610:22: ( whenCase )*
            loop66:
            do {
                int alt66=2;
                int LA66_0 = input.LA(1);

                if ( (LA66_0==WHEN_CASE) ) {
                    alt66=1;
                }


                switch (alt66) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: whenCase
                  {
                  pushFollow(FOLLOW_whenCase_in_caseStatement2173);
                  whenCase();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:610:32: ( elseDO )?
            int alt67=2;
            int LA67_0 = input.LA(1);

            if ( (LA67_0==ELSE) ) {
                alt67=1;
            }
            switch (alt67) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: elseDO
                    {
                    pushFollow(FOLLOW_elseDO_in_caseStatement2176);
                    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 {
        }
        return ;
    }
    // $ANTLR end "caseStatement"


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

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:614:25: ( statement )*
            loop68:
            do {
                int alt68=2;
                int LA68_0 = input.LA(1);

                if ( ((LA68_0>=EXPR && LA68_0<=FOR_SQL)||(LA68_0>=EVENT_CASE && LA68_0<=EVENT_LOOP)||LA68_0==BLOCK||LA68_0==RETURN||LA68_0==CONSTANT||(LA68_0>=EXIT && LA68_0<=IF)||(LA68_0>=RAISE && LA68_0<=POST)) ) {
                    alt68=1;
                }


                switch (alt68) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_whileDoStatement2196);
                  statement();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "whileDoStatement"


    // $ANTLR start "ifStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:617:1: ifStatement : ^( IF expression ( statement )* ( elseIf )* ( elseDO )? ) ;
    public final void ifStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:618:2: ( ^( IF expression ( statement )* ( elseIf )* ( elseDO )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:618:4: ^( IF expression ( statement )* ( elseIf )* ( elseDO )? )
            {
            match(input,IF,FOLLOW_IF_in_ifStatement2211); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:618:20: ( statement )*
            loop69:
            do {
                int alt69=2;
                int LA69_0 = input.LA(1);

                if ( ((LA69_0>=EXPR && LA69_0<=FOR_SQL)||(LA69_0>=EVENT_CASE && LA69_0<=EVENT_LOOP)||LA69_0==BLOCK||LA69_0==RETURN||LA69_0==CONSTANT||(LA69_0>=EXIT && LA69_0<=IF)||(LA69_0>=RAISE && LA69_0<=POST)) ) {
                    alt69=1;
                }


                switch (alt69) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_ifStatement2215);
                  statement();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:618:31: ( elseIf )*
            loop70:
            do {
                int alt70=2;
                int LA70_0 = input.LA(1);

                if ( (LA70_0==ELSEIF) ) {
                    alt70=1;
                }


                switch (alt70) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: elseIf
                  {
                  pushFollow(FOLLOW_elseIf_in_ifStatement2218);
                  elseIf();

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

                  }
                  break;

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

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:618:39: ( elseDO )?
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( (LA71_0==ELSE) ) {
                alt71=1;
            }
            switch (alt71) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: elseDO
                    {
                    pushFollow(FOLLOW_elseDO_in_ifStatement2221);
                    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 {
        }
        return ;
    }
    // $ANTLR end "ifStatement"


    // $ANTLR start "elseIf"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:621:1: elseIf : ^( ELSEIF expression ( statement )* ) ;
    public final void elseIf() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:622:2: ( ^( ELSEIF expression ( statement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:622:4: ^( ELSEIF expression ( statement )* )
            {
            match(input,ELSEIF,FOLLOW_ELSEIF_in_elseIf2235); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:622:24: ( statement )*
            loop72:
            do {
                int alt72=2;
                int LA72_0 = input.LA(1);

                if ( ((LA72_0>=EXPR && LA72_0<=FOR_SQL)||(LA72_0>=EVENT_CASE && LA72_0<=EVENT_LOOP)||LA72_0==BLOCK||LA72_0==RETURN||LA72_0==CONSTANT||(LA72_0>=EXIT && LA72_0<=IF)||(LA72_0>=RAISE && LA72_0<=POST)) ) {
                    alt72=1;
                }


                switch (alt72) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_elseIf2239);
                  statement();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "elseIf"


    // $ANTLR start "raiseStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:626:1: raiseStatement : ^( RAISE ( expression )? ) ;
    public final void raiseStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:627:2: ( ^( RAISE ( expression )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:627:4: ^( RAISE ( expression )? )
            {
            match(input,RAISE,FOLLOW_RAISE_in_raiseStatement2254); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:627:12: ( expression )?
                int alt73=2;
                int LA73_0 = input.LA(1);

                if ( (LA73_0==EXPR) ) {
                    alt73=1;
                }
                switch (alt73) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: expression
                        {
                        pushFollow(FOLLOW_expression_in_raiseStatement2256);
                        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 {
        }
        return ;
    }
    // $ANTLR end "raiseStatement"


    // $ANTLR start "postStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:630:1: postStatement : ^( POST expression ) ;
    public final void postStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:631:2: ( ^( POST expression ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:631:4: ^( POST expression )
            {
            match(input,POST,FOLLOW_POST_in_postStatement2270); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_postStatement2272);
            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 {
        }
        return ;
    }
    // $ANTLR end "postStatement"


    // $ANTLR start "eventLoopStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:633:1: eventLoopStatement : ^( EVENT_LOOP ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) ;
    public final void eventLoopStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:634:2: ( ^( EVENT_LOOP ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:634:4: ^( EVENT_LOOP ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? )
            {
            match(input,EVENT_LOOP,FOLLOW_EVENT_LOOP_in_eventLoopStatement2284); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:634:17: ( preregisterStatement )?
                int alt74=2;
                int LA74_0 = input.LA(1);

                if ( (LA74_0==PREREGISTER) ) {
                    alt74=1;
                }
                switch (alt74) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: preregisterStatement
                        {
                        pushFollow(FOLLOW_preregisterStatement_in_eventLoopStatement2286);
                        preregisterStatement();

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

                        }
                        break;

                }

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:634:39: ( postregisterStatement )?
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( (LA75_0==POSTREGISTER) ) {
                    alt75=1;
                }
                switch (alt75) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: postregisterStatement
                        {
                        pushFollow(FOLLOW_postregisterStatement_in_eventLoopStatement2289);
                        postregisterStatement();

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

                        }
                        break;

                }

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:634:62: ( whenEvent )*
                loop76:
                do {
                    int alt76=2;
                    int LA76_0 = input.LA(1);

                    if ( (LA76_0==WHEN_EVENT) ) {
                        alt76=1;
                    }


                    switch (alt76) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: whenEvent
                      {
                      pushFollow(FOLLOW_whenEvent_in_eventLoopStatement2292);
                      whenEvent();

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

                      }
                      break;

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

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:634:73: ( label )?
                int alt77=2;
                int LA77_0 = input.LA(1);

                if ( (LA77_0==LABEL) ) {
                    alt77=1;
                }
                switch (alt77) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: label
                        {
                        pushFollow(FOLLOW_label_in_eventLoopStatement2295);
                        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 {
        }
        return ;
    }
    // $ANTLR end "eventLoopStatement"


    // $ANTLR start "eventCaseStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:637:1: eventCaseStatement : ^( EVENT_CASE ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) ;
    public final void eventCaseStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:638:3: ( ^( EVENT_CASE ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:638:5: ^( EVENT_CASE ( preregisterStatement )? ( postregisterStatement )? ( whenEvent )* ( label )? )
            {
            match(input,EVENT_CASE,FOLLOW_EVENT_CASE_in_eventCaseStatement2310); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:638:18: ( preregisterStatement )?
                int alt78=2;
                int LA78_0 = input.LA(1);

                if ( (LA78_0==PREREGISTER) ) {
                    alt78=1;
                }
                switch (alt78) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: preregisterStatement
                        {
                        pushFollow(FOLLOW_preregisterStatement_in_eventCaseStatement2312);
                        preregisterStatement();

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

                        }
                        break;

                }

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:638:40: ( postregisterStatement )?
                int alt79=2;
                int LA79_0 = input.LA(1);

                if ( (LA79_0==POSTREGISTER) ) {
                    alt79=1;
                }
                switch (alt79) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: postregisterStatement
                        {
                        pushFollow(FOLLOW_postregisterStatement_in_eventCaseStatement2315);
                        postregisterStatement();

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

                        }
                        break;

                }

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:638:63: ( whenEvent )*
                loop80:
                do {
                    int alt80=2;
                    int LA80_0 = input.LA(1);

                    if ( (LA80_0==WHEN_EVENT) ) {
                        alt80=1;
                    }


                    switch (alt80) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: whenEvent
                      {
                      pushFollow(FOLLOW_whenEvent_in_eventCaseStatement2318);
                      whenEvent();

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

                      }
                      break;

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

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:638:74: ( label )?
                int alt81=2;
                int LA81_0 = input.LA(1);

                if ( (LA81_0==LABEL) ) {
                    alt81=1;
                }
                switch (alt81) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: label
                        {
                        pushFollow(FOLLOW_label_in_eventCaseStatement2321);
                        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 {
        }
        return ;
    }
    // $ANTLR end "eventCaseStatement"


    // $ANTLR start "preregisterStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:641:1: preregisterStatement : ^( PREREGISTER ( registerStatement )* ) ;
    public final void preregisterStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:642:2: ( ^( PREREGISTER ( registerStatement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:642:4: ^( PREREGISTER ( registerStatement )* )
            {
            match(input,PREREGISTER,FOLLOW_PREREGISTER_in_preregisterStatement2336); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:642:18: ( registerStatement )*
                loop82:
                do {
                    int alt82=2;
                    int LA82_0 = input.LA(1);

                    if ( (LA82_0==REGISTER) ) {
                        alt82=1;
                    }


                    switch (alt82) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: registerStatement
                      {
                      pushFollow(FOLLOW_registerStatement_in_preregisterStatement2338);
                      registerStatement();

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

                      }
                      break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "preregisterStatement"


    // $ANTLR start "postregisterStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:645:1: postregisterStatement : ^( POSTREGISTER ( registerStatement )* ) ;
    public final void postregisterStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:646:2: ( ^( POSTREGISTER ( registerStatement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:646:4: ^( POSTREGISTER ( registerStatement )* )
            {
            match(input,POSTREGISTER,FOLLOW_POSTREGISTER_in_postregisterStatement2352); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:646:19: ( registerStatement )*
                loop83:
                do {
                    int alt83=2;
                    int LA83_0 = input.LA(1);

                    if ( (LA83_0==REGISTER) ) {
                        alt83=1;
                    }


                    switch (alt83) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: registerStatement
                      {
                      pushFollow(FOLLOW_registerStatement_in_postregisterStatement2354);
                      registerStatement();

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

                      }
                      break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "postregisterStatement"


    // $ANTLR start "registerStatement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:650:1: registerStatement : ^( REGISTER qualifiedName ( formalParameterDecls )? ) ;
    public final void registerStatement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:651:2: ( ^( REGISTER qualifiedName ( formalParameterDecls )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:651:4: ^( REGISTER qualifiedName ( formalParameterDecls )? )
            {
            match(input,REGISTER,FOLLOW_REGISTER_in_registerStatement2369); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:651:29: ( formalParameterDecls )?
            int alt84=2;
            int LA84_0 = input.LA(1);

            if ( (LA84_0==PARAMETER) ) {
                alt84=1;
            }
            switch (alt84) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: formalParameterDecls
                    {
                    pushFollow(FOLLOW_formalParameterDecls_in_registerStatement2373);
                    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 {
        }
        return ;
    }
    // $ANTLR end "registerStatement"


    // $ANTLR start "startTask"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:655:1: startTask : ^( START_TASK expression ( completion )? ) ;
    public final void startTask() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:656:3: ( ^( START_TASK expression ( completion )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:656:5: ^( START_TASK expression ( completion )? )
            {
            match(input,START_TASK,FOLLOW_START_TASK_in_startTask2389); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:656:30: ( completion )?
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==COMPLETION) ) {
                alt85=1;
            }
            switch (alt85) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: completion
                    {
                    pushFollow(FOLLOW_completion_in_startTask2394);
                    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 {
        }
        return ;
    }
    // $ANTLR end "startTask"


    // $ANTLR start "completion"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:659:1: completion : ( ^( COMPLETION 'ignore' ) | ^( COMPLETION EVENT ( ^( TRANSACTION IDENTIFIER ) )? ) );
    public final void completion() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:660:2: ( ^( COMPLETION 'ignore' ) | ^( COMPLETION EVENT ( ^( TRANSACTION IDENTIFIER ) )? ) )
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==COMPLETION) ) {
                int LA87_1 = input.LA(2);

                if ( (LA87_1==DOWN) ) {
                    int LA87_2 = input.LA(3);

                    if ( (LA87_2==237) ) {
                        alt87=1;
                    }
                    else if ( (LA87_2==EVENT) ) {
                        alt87=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return ;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 87, 2, input);

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

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

                throw nvae;
            }
            switch (alt87) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:660:4: ^( COMPLETION 'ignore' )
                    {
                    match(input,COMPLETION,FOLLOW_COMPLETION_in_completion2411); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    match(input,237,FOLLOW_237_in_completion2413); if (state.failed) return ;

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:661:5: ^( COMPLETION EVENT ( ^( TRANSACTION IDENTIFIER ) )? )
                    {
                    match(input,COMPLETION,FOLLOW_COMPLETION_in_completion2422); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    match(input,EVENT,FOLLOW_EVENT_in_completion2424); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:661:24: ( ^( TRANSACTION IDENTIFIER ) )?
                    int alt86=2;
                    int LA86_0 = input.LA(1);

                    if ( (LA86_0==TRANSACTION) ) {
                        alt86=1;
                    }
                    switch (alt86) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:661:25: ^( TRANSACTION IDENTIFIER )
                            {
                            match(input,TRANSACTION,FOLLOW_TRANSACTION_in_completion2428); if (state.failed) return ;

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

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

                            }
                            break;

                    }


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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "completion"


    // $ANTLR start "whenException"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:665:1: whenException : ^( WHEN_EXCEPTION IDENTIFIER type ( statement )* ) ;
    public final void whenException() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:666:2: ( ^( WHEN_EXCEPTION IDENTIFIER type ( statement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:666:4: ^( WHEN_EXCEPTION IDENTIFIER type ( statement )* )
            {
            match(input,WHEN_EXCEPTION,FOLLOW_WHEN_EXCEPTION_in_whenException2450); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_whenException2452); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_whenException2454);
            type();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:666:37: ( statement )*
            loop88:
            do {
                int alt88=2;
                int LA88_0 = input.LA(1);

                if ( ((LA88_0>=EXPR && LA88_0<=FOR_SQL)||(LA88_0>=EVENT_CASE && LA88_0<=EVENT_LOOP)||LA88_0==BLOCK||LA88_0==RETURN||LA88_0==CONSTANT||(LA88_0>=EXIT && LA88_0<=IF)||(LA88_0>=RAISE && LA88_0<=POST)) ) {
                    alt88=1;
                }


                switch (alt88) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_whenException2456);
                  statement();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "whenException"


    // $ANTLR start "whenCase"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:669:1: whenCase : ^( WHEN_CASE expression ( statement )* ) ;
    public final void whenCase() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:670:2: ( ^( WHEN_CASE expression ( statement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:670:4: ^( WHEN_CASE expression ( statement )* )
            {
            match(input,WHEN_CASE,FOLLOW_WHEN_CASE_in_whenCase2470); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:670:27: ( statement )*
            loop89:
            do {
                int alt89=2;
                int LA89_0 = input.LA(1);

                if ( ((LA89_0>=EXPR && LA89_0<=FOR_SQL)||(LA89_0>=EVENT_CASE && LA89_0<=EVENT_LOOP)||LA89_0==BLOCK||LA89_0==RETURN||LA89_0==CONSTANT||(LA89_0>=EXIT && LA89_0<=IF)||(LA89_0>=RAISE && LA89_0<=POST)) ) {
                    alt89=1;
                }


                switch (alt89) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_whenCase2474);
                  statement();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "whenCase"


    // $ANTLR start "whenEvent"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:673:1: whenEvent : ^( WHEN_EVENT expression ( eventArguments )? ( statement )* ) ;
    public final void whenEvent() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:674:3: ( ^( WHEN_EVENT expression ( eventArguments )? ( statement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:674:5: ^( WHEN_EVENT expression ( eventArguments )? ( statement )* )
            {
            match(input,WHEN_EVENT,FOLLOW_WHEN_EVENT_in_whenEvent2490); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:674:29: ( eventArguments )?
            int alt90=2;
            int LA90_0 = input.LA(1);

            if ( (LA90_0==ARGUMENT_LIST_EVENT) ) {
                alt90=1;
            }
            switch (alt90) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: eventArguments
                    {
                    pushFollow(FOLLOW_eventArguments_in_whenEvent2494);
                    eventArguments();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:674:45: ( statement )*
            loop91:
            do {
                int alt91=2;
                int LA91_0 = input.LA(1);

                if ( ((LA91_0>=EXPR && LA91_0<=FOR_SQL)||(LA91_0>=EVENT_CASE && LA91_0<=EVENT_LOOP)||LA91_0==BLOCK||LA91_0==RETURN||LA91_0==CONSTANT||(LA91_0>=EXIT && LA91_0<=IF)||(LA91_0>=RAISE && LA91_0<=POST)) ) {
                    alt91=1;
                }


                switch (alt91) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                  {
                  pushFollow(FOLLOW_statement_in_whenEvent2497);
                  statement();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "whenEvent"


    // $ANTLR start "exceptionBlock"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:677:1: exceptionBlock : ^( EXCEPTION ( whenException )* ( elseDO )? ) ;
    public final void exceptionBlock() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:678:2: ( ^( EXCEPTION ( whenException )* ( elseDO )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:678:4: ^( EXCEPTION ( whenException )* ( elseDO )? )
            {
            match(input,EXCEPTION,FOLLOW_EXCEPTION_in_exceptionBlock2513); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:678:16: ( whenException )*
                loop92:
                do {
                    int alt92=2;
                    int LA92_0 = input.LA(1);

                    if ( (LA92_0==WHEN_EXCEPTION) ) {
                        alt92=1;
                    }


                    switch (alt92) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: whenException
                      {
                      pushFollow(FOLLOW_whenException_in_exceptionBlock2515);
                      whenException();

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

                      }
                      break;

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

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:678:31: ( elseDO )?
                int alt93=2;
                int LA93_0 = input.LA(1);

                if ( (LA93_0==ELSE) ) {
                    alt93=1;
                }
                switch (alt93) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: elseDO
                        {
                        pushFollow(FOLLOW_elseDO_in_exceptionBlock2518);
                        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 {
        }
        return ;
    }
    // $ANTLR end "exceptionBlock"


    // $ANTLR start "elseDO"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:682:1: elseDO : ^( ELSE ( statement )* ) ;
    public final void elseDO() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:683:3: ( ^( ELSE ( statement )* ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:683:5: ^( ELSE ( statement )* )
            {
            match(input,ELSE,FOLLOW_ELSE_in_elseDO2539); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:683:12: ( statement )*
                loop94:
                do {
                    int alt94=2;
                    int LA94_0 = input.LA(1);

                    if ( ((LA94_0>=EXPR && LA94_0<=FOR_SQL)||(LA94_0>=EVENT_CASE && LA94_0<=EVENT_LOOP)||LA94_0==BLOCK||LA94_0==RETURN||LA94_0==CONSTANT||(LA94_0>=EXIT && LA94_0<=IF)||(LA94_0>=RAISE && LA94_0<=POST)) ) {
                        alt94=1;
                    }


                    switch (alt94) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                      {
                      pushFollow(FOLLOW_statement_in_elseDO2541);
                      statement();

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

                      }
                      break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "elseDO"


    // $ANTLR start "methodReturnDeclaration"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:686:1: methodReturnDeclaration : ^( RETURN type ( COPY )? ) ;
    public final void methodReturnDeclaration() throws RecognitionException {
        CommonTree COPY48=null;
        ForteAST.type_return type47 = null;


        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:687:2: ( ^( RETURN type ( COPY )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:687:5: ^( RETURN type ( COPY )? )
            {
            match(input,RETURN,FOLLOW_RETURN_in_methodReturnDeclaration2557); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_methodReturnDeclaration2559);
            type47=type();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:687:19: ( COPY )?
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==COPY) ) {
                alt95=1;
            }
            switch (alt95) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: COPY
                    {
                    COPY48=(CommonTree)match(input,COPY,FOLLOW_COPY_in_methodReturnDeclaration2561); if (state.failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (state.failed) return ;
            if ( state.backtracking==0 ) {

                ((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod.setReturnType((type47!=null?(input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(type47.start),
                input.getTreeAdaptor().getTokenStopIndex(type47.start))):null));
                if (COPY48 != null){
                  ((methodDeclaration_scope)methodDeclaration_stack.peek()).currentMethod.setCopyReturn(true);
                }
               
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "methodReturnDeclaration"


    // $ANTLR start "formalParameterDecls"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:697:1: formalParameterDecls : ( normalParameterDecl )+ ;
    public final void formalParameterDecls() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:698:5: ( ( normalParameterDecl )+ )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:698:9: ( normalParameterDecl )+
            {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:698:9: ( normalParameterDecl )+
            int cnt96=0;
            loop96:
            do {
                int alt96=2;
                int LA96_0 = input.LA(1);

                if ( (LA96_0==PARAMETER) ) {
                    alt96=1;
                }


                switch (alt96) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: normalParameterDecl
                  {
                  pushFollow(FOLLOW_normalParameterDecl_in_formalParameterDecls2585);
                  normalParameterDecl();

                  state._fsp--;
                  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);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "formalParameterDecls"


    // $ANTLR start "normalParameterDecl"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:701:1: normalParameterDecl : ^( PARAMETER paramName type paramModifiers ( expression )? ) ;
    public final void normalParameterDecl() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:702:5: ( ^( PARAMETER paramName type paramModifiers ( expression )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:702:10: ^( PARAMETER paramName type paramModifiers ( expression )? )
            {
            match(input,PARAMETER,FOLLOW_PARAMETER_in_normalParameterDecl2608); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_paramName_in_normalParameterDecl2610);
            paramName();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FOLLOW_type_in_normalParameterDecl2612);
            type();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FOLLOW_paramModifiers_in_normalParameterDecl2614);
            paramModifiers();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:702:52: ( expression )?
            int alt97=2;
            int LA97_0 = input.LA(1);

            if ( (LA97_0==EXPR) ) {
                alt97=1;
            }
            switch (alt97) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: expression
                    {
                    pushFollow(FOLLOW_expression_in_normalParameterDecl2616);
                    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 {
        }
        return ;
    }
    // $ANTLR end "normalParameterDecl"


    // $ANTLR start "paramName"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:705:1: paramName : name ;
    public final void paramName() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:706:3: ( name )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:706:5: name
            {
            pushFollow(FOLLOW_name_in_paramName2633);
            name();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "paramName"


    // $ANTLR start "paramModifiers"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:711:1: paramModifiers : ( COPY )? ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER ) ;
    public final void paramModifiers() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:712:5: ( ( COPY )? ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:712:7: ( COPY )? ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER )
            {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:712:7: ( COPY )?
            int alt98=2;
            int LA98_0 = input.LA(1);

            if ( (LA98_0==COPY) ) {
                alt98=1;
            }
            switch (alt98) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: COPY
                    {
                    match(input,COPY,FOLLOW_COPY_in_paramModifiers2651); if (state.failed) return ;

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:713:5: ( INPUT OUTPUT | INPUT | OUTPUT | IDENTIFIER )
            int alt99=4;
            switch ( input.LA(1) ) {
            case INPUT:
                {
                int LA99_1 = input.LA(2);

                if ( (LA99_1==OUTPUT) ) {
                    alt99=1;
                }
                else if ( (LA99_1==UP||LA99_1==EXPR) ) {
                    alt99=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 99, 1, input);

                    throw nvae;
                }
                }
                break;
            case OUTPUT:
                {
                alt99=3;
                }
                break;
            case IDENTIFIER:
                {
                alt99=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 99, 0, input);

                throw nvae;
            }

            switch (alt99) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:713:6: INPUT OUTPUT
                    {
                    match(input,INPUT,FOLLOW_INPUT_in_paramModifiers2661); if (state.failed) return ;
                    match(input,OUTPUT,FOLLOW_OUTPUT_in_paramModifiers2663); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:714:9: INPUT
                    {
                    match(input,INPUT,FOLLOW_INPUT_in_paramModifiers2673); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:715:9: OUTPUT
                    {
                    match(input,OUTPUT,FOLLOW_OUTPUT_in_paramModifiers2684); if (state.failed) return ;

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:716:9: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_paramModifiers2694); if (state.failed) return ;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "paramModifiers"


    // $ANTLR start "label"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:725:1: label : ^( LABEL IDENTIFIER ) ;
    public final void label() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:726:3: ( ^( LABEL IDENTIFIER ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:726:5: ^( LABEL IDENTIFIER )
            {
            match(input,LABEL,FOLLOW_LABEL_in_label2718); if (state.failed) return ;

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "label"


    // $ANTLR start "block"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:734:1: block : ^( BLOCK ( transaction )? ( statement )* ( exceptionBlock )? ) ;
    public final void block() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:735:2: ( ^( BLOCK ( transaction )? ( statement )* ( exceptionBlock )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:735:4: ^( BLOCK ( transaction )? ( statement )* ( exceptionBlock )? )
            {
            match(input,BLOCK,FOLLOW_BLOCK_in_block2740); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:735:12: ( transaction )?
                int alt100=2;
                int LA100_0 = input.LA(1);

                if ( (LA100_0==TRANSACTION) ) {
                    alt100=1;
                }
                switch (alt100) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: transaction
                        {
                        pushFollow(FOLLOW_transaction_in_block2742);
                        transaction();

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

                        }
                        break;

                }

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:736:3: ( statement )*
                loop101:
                do {
                    int alt101=2;
                    int LA101_0 = input.LA(1);

                    if ( ((LA101_0>=EXPR && LA101_0<=FOR_SQL)||(LA101_0>=EVENT_CASE && LA101_0<=EVENT_LOOP)||LA101_0==BLOCK||LA101_0==RETURN||LA101_0==CONSTANT||(LA101_0>=EXIT && LA101_0<=IF)||(LA101_0>=RAISE && LA101_0<=POST)) ) {
                        alt101=1;
                    }


                    switch (alt101) {
                  case 1 :
                      // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: statement
                      {
                      pushFollow(FOLLOW_statement_in_block2747);
                      statement();

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

                      }
                      break;

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

                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:737:3: ( exceptionBlock )?
                int alt102=2;
                int LA102_0 = input.LA(1);

                if ( (LA102_0==EXCEPTION) ) {
                    alt102=1;
                }
                switch (alt102) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: exceptionBlock
                        {
                        pushFollow(FOLLOW_exceptionBlock_in_block2752);
                        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 {
        }
        return ;
    }
    // $ANTLR end "block"


    // $ANTLR start "transaction"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:739:1: transaction : ^( TRANSACTION ( IDENTIFIER )? ) ;
    public final void transaction() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:740:2: ( ^( TRANSACTION ( IDENTIFIER )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:740:4: ^( TRANSACTION ( IDENTIFIER )? )
            {
            match(input,TRANSACTION,FOLLOW_TRANSACTION_in_transaction2765); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:740:18: ( IDENTIFIER )?
                int alt103=2;
                int LA103_0 = input.LA(1);

                if ( (LA103_0==IDENTIFIER) ) {
                    alt103=1;
                }
                switch (alt103) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: IDENTIFIER
                        {
                        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_transaction2767); if (state.failed) return ;

                        }
                        break;

                }


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "transaction"


    // $ANTLR start "parenthesizedExpression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:745:1: parenthesizedExpression : ^( PARENTESIZED_EXPR expression ) ;
    public final void parenthesizedExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:746:5: ( ^( PARENTESIZED_EXPR expression ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:746:9: ^( PARENTESIZED_EXPR expression )
            {
            match(input,PARENTESIZED_EXPR,FOLLOW_PARENTESIZED_EXPR_in_parenthesizedExpression2789); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_parenthesizedExpression2791);
            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 {
        }
        return ;
    }
    // $ANTLR end "parenthesizedExpression"


    // $ANTLR start "expression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:749:1: expression : ^( EXPR expr ) ;
    public final void expression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:750:5: ( ^( EXPR expr ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:750:9: ^( EXPR expr )
            {
            match(input,EXPR,FOLLOW_EXPR_in_expression2816); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expr_in_expression2818);
            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 {
        }
        return ;
    }
    // $ANTLR end "expression"


    // $ANTLR start "expr"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:753:1: expr : ( ^( EQ expr expr ) | ^( EQ expr ( START_TASK expr ( completion )? ) ) | ^( 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/ToolModel/src/tool/model/grammar/ForteAST.g:754:5: ( ^( EQ expr expr ) | ^( EQ expr ( START_TASK expr ( completion )? ) ) | ^( 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 alt106=24;
            alt106 = dfa106.predict(input);
            switch (alt106) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:754:9: ^( EQ expr expr )
                    {
                    match(input,EQ,FOLLOW_EQ_in_expr2843); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2845);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2847);
                    expr();

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

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:8: ^( EQ expr ( START_TASK expr ( completion )? ) )
                    {
                    match(input,EQ,FOLLOW_EQ_in_expr2858); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2860);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:18: ( START_TASK expr ( completion )? )
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:19: START_TASK expr ( completion )?
                    {
                    match(input,START_TASK,FOLLOW_START_TASK_in_expr2863); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2865);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:35: ( completion )?
                    int alt104=2;
                    int LA104_0 = input.LA(1);

                    if ( (LA104_0==COMPLETION) ) {
                        alt104=1;
                    }
                    switch (alt104) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: completion
                            {
                            pushFollow(FOLLOW_completion_in_expr2867);
                            completion();

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

                            }
                            break;

                    }


                    }


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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:756:9: ^( BIT_OR expr expr )
                    {
                    match(input,BIT_OR,FOLLOW_BIT_OR_in_expr2881); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2883);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2885);
                    expr();

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

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:757:9: ^( BIT_XOR expr expr )
                    {
                    match(input,BIT_XOR,FOLLOW_BIT_XOR_in_expr2897); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2899);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2901);
                    expr();

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

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:758:9: ^( BIT_AND expr expr expr )
                    {
                    match(input,BIT_AND,FOLLOW_BIT_AND_in_expr2913); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2915);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2917);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2919);
                    expr();

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

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:759:9: ^( OR expr expr )
                    {
                    match(input,OR,FOLLOW_OR_in_expr2931); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2933);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2935);
                    expr();

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

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:760:9: ^( XOR expr expr )
                    {
                    match(input,XOR,FOLLOW_XOR_in_expr2947); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2949);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2951);
                    expr();

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

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:761:9: ^( AND expr expr )
                    {
                    match(input,AND,FOLLOW_AND_in_expr2963); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2965);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2967);
                    expr();

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

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

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:762:9: ^( NOT_EQUAL expr expr )
                    {
                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_expr2979); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2981);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2983);
                    expr();

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

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

                    }
                    break;
                case 10 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:763:9: ^( LTEQ expr expr )
                    {
                    match(input,LTEQ,FOLLOW_LTEQ_in_expr2995); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2997);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2999);
                    expr();

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

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

                    }
                    break;
                case 11 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:764:9: ^( GTEQ expr expr )
                    {
                    match(input,GTEQ,FOLLOW_GTEQ_in_expr3011); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3013);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3015);
                    expr();

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

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

                    }
                    break;
                case 12 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:765:9: ^( GT expr expr )
                    {
                    match(input,GT,FOLLOW_GT_in_expr3027); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3029);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3031);
                    expr();

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

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

                    }
                    break;
                case 13 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:766:9: ^( LT expr expr )
                    {
                    match(input,LT,FOLLOW_LT_in_expr3043); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3045);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3047);
                    expr();

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

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

                    }
                    break;
                case 14 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:767:9: ^( PLUS expr expr )
                    {
                    match(input,PLUS,FOLLOW_PLUS_in_expr3059); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3061);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3063);
                    expr();

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

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

                    }
                    break;
                case 15 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:768:9: ^( MINUS expr expr )
                    {
                    match(input,MINUS,FOLLOW_MINUS_in_expr3075); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3077);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3079);
                    expr();

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

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

                    }
                    break;
                case 16 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:769:9: ^( MULT expr expr )
                    {
                    match(input,MULT,FOLLOW_MULT_in_expr3091); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3093);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3095);
                    expr();

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

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

                    }
                    break;
                case 17 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:770:9: ^( DIV expr expr )
                    {
                    match(input,DIV,FOLLOW_DIV_in_expr3107); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3109);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3111);
                    expr();

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

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

                    }
                    break;
                case 18 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:771:9: ^( MOD expr expr )
                    {
                    match(input,MOD,FOLLOW_MOD_in_expr3123); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3125);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3127);
                    expr();

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

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

                    }
                    break;
                case 19 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:772:9: ^( UNARY_PLUS expr )
                    {
                    match(input,UNARY_PLUS,FOLLOW_UNARY_PLUS_in_expr3139); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3141);
                    expr();

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

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

                    }
                    break;
                case 20 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:773:9: ^( UNARY_MINUS expr )
                    {
                    match(input,UNARY_MINUS,FOLLOW_UNARY_MINUS_in_expr3153); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3155);
                    expr();

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

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

                    }
                    break;
                case 21 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:774:9: ^( NOT expr )
                    {
                    match(input,NOT,FOLLOW_NOT_in_expr3167); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3169);
                    expr();

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

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

                    }
                    break;
                case 22 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:775:9: ^( CAST_EXPR type expr )
                    {
                    match(input,CAST_EXPR,FOLLOW_CAST_EXPR_in_expr3181); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_type_in_expr3183);
                    type();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3185);
                    expr();

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

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

                    }
                    break;
                case 23 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:776:9: primaryExpression
                    {
                    pushFollow(FOLLOW_primaryExpression_in_expr3196);
                    primaryExpression();

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

                    }
                    break;
                case 24 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:777:9: ^( START_TASK expr ( completion )? )
                    {
                    match(input,START_TASK,FOLLOW_START_TASK_in_expr3207); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3209);
                    expr();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:777:27: ( completion )?
                    int alt105=2;
                    int LA105_0 = input.LA(1);

                    if ( (LA105_0==COMPLETION) ) {
                        alt105=1;
                    }
                    switch (alt105) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: completion
                            {
                            pushFollow(FOLLOW_completion_in_expr3211);
                            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 {
        }
        return ;
    }
    // $ANTLR end "expr"


    // $ANTLR start "primaryExpression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:782:1: primaryExpression : ( ^( DOT ( primaryExpression ( IDENTIFIER ) ) ) | parenthesizedExpression | qualifiedIdentExpression | ^( METHOD_CALL primaryExpression arguments ) | ^( ARRAY_INDEX primaryExpression expression ) | ^( LOCAL_DECLARATION IDENTIFIER type ( expression )? ) | literal | newExpression | reservedPrefix | ^( CAST_EXPR type expression ) );
    public final void primaryExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:783:3: ( ^( DOT ( primaryExpression ( IDENTIFIER ) ) ) | parenthesizedExpression | qualifiedIdentExpression | ^( METHOD_CALL primaryExpression arguments ) | ^( ARRAY_INDEX primaryExpression expression ) | ^( LOCAL_DECLARATION IDENTIFIER type ( expression )? ) | literal | newExpression | reservedPrefix | ^( CAST_EXPR type expression ) )
            int alt108=10;
            alt108 = dfa108.predict(input);
            switch (alt108) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:783:5: ^( DOT ( primaryExpression ( IDENTIFIER ) ) )
                    {
                    match(input,DOT,FOLLOW_DOT_in_primaryExpression3235); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:784:13: ( primaryExpression ( IDENTIFIER ) )
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:784:17: primaryExpression ( IDENTIFIER )
                    {
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3253);
                    primaryExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:785:17: ( IDENTIFIER )
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:785:21: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primaryExpression3275); if (state.failed) return ;

                    }


                    }


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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:789:6: parenthesizedExpression
                    {
                    pushFollow(FOLLOW_parenthesizedExpression_in_primaryExpression3324);
                    parenthesizedExpression();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:790:6: qualifiedIdentExpression
                    {
                    pushFollow(FOLLOW_qualifiedIdentExpression_in_primaryExpression3331);
                    qualifiedIdentExpression();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:791:7: ^( METHOD_CALL primaryExpression arguments )
                    {
                    match(input,METHOD_CALL,FOLLOW_METHOD_CALL_in_primaryExpression3340); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3342);
                    primaryExpression();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_arguments_in_primaryExpression3344);
                    arguments();

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

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:792:6: ^( ARRAY_INDEX primaryExpression expression )
                    {
                    match(input,ARRAY_INDEX,FOLLOW_ARRAY_INDEX_in_primaryExpression3353); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3356);
                    primaryExpression();

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

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

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:793:6: ^( LOCAL_DECLARATION IDENTIFIER type ( expression )? )
                    {
                    match(input,LOCAL_DECLARATION,FOLLOW_LOCAL_DECLARATION_in_primaryExpression3367); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primaryExpression3369); if (state.failed) return ;
                    pushFollow(FOLLOW_type_in_primaryExpression3371);
                    type();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:793:42: ( expression )?
                    int alt107=2;
                    int LA107_0 = input.LA(1);

                    if ( (LA107_0==EXPR) ) {
                        alt107=1;
                    }
                    switch (alt107) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: expression
                            {
                            pushFollow(FOLLOW_expression_in_primaryExpression3373);
                            expression();

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

                            }
                            break;

                    }


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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:794:6: literal
                    {
                    pushFollow(FOLLOW_literal_in_primaryExpression3382);
                    literal();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:795:7: newExpression
                    {
                    pushFollow(FOLLOW_newExpression_in_primaryExpression3390);
                    newExpression();

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

                    }
                    break;
                case 9 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:796:7: reservedPrefix
                    {
                    pushFollow(FOLLOW_reservedPrefix_in_primaryExpression3398);
                    reservedPrefix();

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

                    }
                    break;
                case 10 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:797:6: ^( CAST_EXPR type expression )
                    {
                    match(input,CAST_EXPR,FOLLOW_CAST_EXPR_in_primaryExpression3406); if (state.failed) return ;

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_type_in_primaryExpression3408);
                    type();

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

                    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 {
        }
        return ;
    }
    // $ANTLR end "primaryExpression"


    // $ANTLR start "qualifiedIdentExpression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:800:1: qualifiedIdentExpression : ( qualifiedName | ^( METHOD_CALL qualifiedName arguments ) | ^( ARRAY_INDEX qualifiedName expression ) );
    public final void qualifiedIdentExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:801:2: ( qualifiedName | ^( METHOD_CALL qualifiedName arguments ) | ^( ARRAY_INDEX qualifiedName expression ) )
            int alt109=3;
            switch ( input.LA(1) ) {
            case NO_PARAM_NAME:
            case BEGIN:
            case IDENTIFIER:
            case FROM:
            case END:
            case INCLUDES:
            case HAS:
            case PROPERTY:
            case CLASS:
            case METHOD:
            case FORWARD:
            case IS:
            case INTERFACE:
            case CURSOR:
            case STRUCT:
            case DOT:
            case NIL:
            case SERVICE:
            case TRANSACTION:
            case INHERITS:
            case IMPLEMENTS:
            case ATTRIBUTE:
            case WIDGETIDENTFIER:
            case VIRTUAL:
            case WHERE:
            case RETURN:
            case EXCEPTION:
            case EVENT:
            case HANDLER:
            case CONSTANT:
            case FOR:
            case IN:
            case DO:
            case TO:
            case EXIT:
            case CONTINUE:
            case CASE:
            case WHILE:
            case IF:
            case THEN:
            case ELSEIF:
            case RAISE:
            case POST:
            case LOOP:
            case PREREGISTER:
            case POSTREGISTER:
            case REGISTER:
            case WHEN:
            case ELSE:
            case COPY:
            case INPUT:
            case OUTPUT:
            case START:
            case TASK:
            case AND:
            case NOT:
            case NEW:
            case SELF:
            case SUPER:
            case OF:
            case ENUM:
            case TYPEDEF:
            case CHANGED:
            case FALSE:
            case PRIVATE:
            case PUBLIC:
            case TRUE:
            case UNION:
            case 234:
                {
                alt109=1;
                }
                break;
            case METHOD_CALL:
                {
                alt109=2;
                }
                break;
            case ARRAY_INDEX:
                {
                alt109=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 109, 0, input);

                throw nvae;
            }

            switch (alt109) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:802:4: qualifiedName
                    {
                    pushFollow(FOLLOW_qualifiedName_in_qualifiedIdentExpression3429);
                    qualifiedName();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:803:5: ^( METHOD_CALL qualifiedName arguments )
                    {
                    match(input,METHOD_CALL,FOLLOW_METHOD_CALL_in_qualifiedIdentExpression3436); if (state.failed) return ;

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

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_arguments_in_qualifiedIdentExpression3440);
                    arguments();

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

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:804:5: ^( ARRAY_INDEX qualifiedName expression )
                    {
                    match(input,ARRAY_INDEX,FOLLOW_ARRAY_INDEX_in_qualifiedIdentExpression3448); if (state.failed) return ;

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

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

                    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 {
        }
        return ;
    }
    // $ANTLR end "qualifiedIdentExpression"


    // $ANTLR start "newExpression"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:807:1: newExpression : ^( CLASS_CONSTRUCTOR_CALL ( arguments )? ) ;
    public final void newExpression() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:808:5: ( ^( CLASS_CONSTRUCTOR_CALL ( arguments )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:808:9: ^( CLASS_CONSTRUCTOR_CALL ( arguments )? )
            {
            match(input,CLASS_CONSTRUCTOR_CALL,FOLLOW_CLASS_CONSTRUCTOR_CALL_in_newExpression3472); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:808:34: ( arguments )?
                int alt110=2;
                int LA110_0 = input.LA(1);

                if ( (LA110_0==ARGUMENT_LIST) ) {
                    alt110=1;
                }
                switch (alt110) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: arguments
                        {
                        pushFollow(FOLLOW_arguments_in_newExpression3474);
                        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 {
        }
        return ;
    }
    // $ANTLR end "newExpression"


    // $ANTLR start "arguments"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:811:1: arguments : ^( ARGUMENT_LIST ( argumentList )? ) ;
    public final void arguments() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:812:2: ( ^( ARGUMENT_LIST ( argumentList )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:812:4: ^( ARGUMENT_LIST ( argumentList )? )
            {
            match(input,ARGUMENT_LIST,FOLLOW_ARGUMENT_LIST_in_arguments3491); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:812:20: ( argumentList )?
                int alt111=2;
                int LA111_0 = input.LA(1);

                if ( (LA111_0==ARGUMENT) ) {
                    alt111=1;
                }
                switch (alt111) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: argumentList
                        {
                        pushFollow(FOLLOW_argumentList_in_arguments3493);
                        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 {
        }
        return ;
    }
    // $ANTLR end "arguments"


    // $ANTLR start "eventArguments"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:815:1: eventArguments : ^( ARGUMENT_LIST_EVENT ( argumentEventList )? ) ;
    public final void eventArguments() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:816:3: ( ^( ARGUMENT_LIST_EVENT ( argumentEventList )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:816:5: ^( ARGUMENT_LIST_EVENT ( argumentEventList )? )
            {
            match(input,ARGUMENT_LIST_EVENT,FOLLOW_ARGUMENT_LIST_EVENT_in_eventArguments3508); if (state.failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (state.failed) return ;
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:816:27: ( argumentEventList )?
                int alt112=2;
                int LA112_0 = input.LA(1);

                if ( (LA112_0==ARGUMENT) ) {
                    alt112=1;
                }
                switch (alt112) {
                    case 1 :
                        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: argumentEventList
                        {
                        pushFollow(FOLLOW_argumentEventList_in_eventArguments3510);
                        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 {
        }
        return ;
    }
    // $ANTLR end "eventArguments"


    // $ANTLR start "argumentList"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:819:1: argumentList : ( argument )+ ;
    public final void argumentList() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:820:2: ( ( argument )+ )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:820:4: ( argument )+
            {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:820:4: ( argument )+
            int cnt113=0;
            loop113:
            do {
                int alt113=2;
                int LA113_0 = input.LA(1);

                if ( (LA113_0==ARGUMENT) ) {
                    alt113=1;
                }


                switch (alt113) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: argument
                  {
                  pushFollow(FOLLOW_argument_in_argumentList3525);
                  argument();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "argumentList"


    // $ANTLR start "argumentEventList"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:823:1: argumentEventList : ( argumentEvent )+ ;
    public final void argumentEventList() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:824:3: ( ( argumentEvent )+ )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:824:5: ( argumentEvent )+
            {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:824:5: ( argumentEvent )+
            int cnt114=0;
            loop114:
            do {
                int alt114=2;
                int LA114_0 = input.LA(1);

                if ( (LA114_0==ARGUMENT) ) {
                    alt114=1;
                }


                switch (alt114) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: argumentEvent
                  {
                  pushFollow(FOLLOW_argumentEvent_in_argumentEventList3538);
                  argumentEvent();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "argumentEventList"


    // $ANTLR start "argument"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:827:1: argument : ^( ARGUMENT expression ( name )? ) ;
    public final void argument() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:828:2: ( ^( ARGUMENT expression ( name )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:828:4: ^( ARGUMENT expression ( name )? )
            {
            match(input,ARGUMENT,FOLLOW_ARGUMENT_in_argument3553); if (state.failed) return ;

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

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:828:26: ( name )?
            int alt115=2;
            int LA115_0 = input.LA(1);

            if ( (LA115_0==NO_PARAM_NAME||(LA115_0>=BEGIN && LA115_0<=FROM)||(LA115_0>=END && LA115_0<=PROPERTY)||LA115_0==CLASS||LA115_0==METHOD||(LA115_0>=FORWARD && LA115_0<=IS)||(LA115_0>=INTERFACE && LA115_0<=STRUCT)||(LA115_0>=NIL && LA115_0<=SERVICE)||(LA115_0>=TRANSACTION && LA115_0<=IMPLEMENTS)||(LA115_0>=ATTRIBUTE && LA115_0<=WHERE)||(LA115_0>=RETURN && LA115_0<=TO)||(LA115_0>=EXIT && LA115_0<=TASK)||LA115_0==AND||(LA115_0>=NOT && LA115_0<=OF)||(LA115_0>=ENUM && LA115_0<=UNION)||LA115_0==234) ) {
                alt115=1;
            }
            switch (alt115) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: name
                    {
                    pushFollow(FOLLOW_name_in_argument3557);
                    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 {
        }
        return ;
    }
    // $ANTLR end "argument"


    // $ANTLR start "argumentEvent"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:831:1: argumentEvent : ^( ARGUMENT evParamName ( name )? ) ;
    public final void argumentEvent() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:832:3: ( ^( ARGUMENT evParamName ( name )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:832:5: ^( ARGUMENT evParamName ( name )? )
            {
            match(input,ARGUMENT,FOLLOW_ARGUMENT_in_argumentEvent3572); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_evParamName_in_argumentEvent3574);
            evParamName();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:832:28: ( name )?
            int alt116=2;
            int LA116_0 = input.LA(1);

            if ( (LA116_0==NO_PARAM_NAME||(LA116_0>=BEGIN && LA116_0<=FROM)||(LA116_0>=END && LA116_0<=PROPERTY)||LA116_0==CLASS||LA116_0==METHOD||(LA116_0>=FORWARD && LA116_0<=IS)||(LA116_0>=INTERFACE && LA116_0<=STRUCT)||(LA116_0>=NIL && LA116_0<=SERVICE)||(LA116_0>=TRANSACTION && LA116_0<=IMPLEMENTS)||(LA116_0>=ATTRIBUTE && LA116_0<=WHERE)||(LA116_0>=RETURN && LA116_0<=TO)||(LA116_0>=EXIT && LA116_0<=TASK)||LA116_0==AND||(LA116_0>=NOT && LA116_0<=OF)||(LA116_0>=ENUM && LA116_0<=UNION)||LA116_0==234) ) {
                alt116=1;
            }
            switch (alt116) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: name
                    {
                    pushFollow(FOLLOW_name_in_argumentEvent3576);
                    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 {
        }
        return ;
    }
    // $ANTLR end "argumentEvent"


    // $ANTLR start "evParamName"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:835:1: evParamName : ( IDENTIFIER | RETURN | EXCEPTION );
    public final void evParamName() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:836:2: ( IDENTIFIER | RETURN | EXCEPTION )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==IDENTIFIER||(input.LA(1)>=RETURN && input.LA(1)<=EXCEPTION) ) {
                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 {
        }
        return ;
    }
    // $ANTLR end "evParamName"

    public static class modifier_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "modifier"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:841: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/ToolModel/src/tool/model/grammar/ForteAST.g:842:5: ( 'public' | 'private' | 'publicinternal' | 'privateinternal' )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:
            {
            if ( (input.LA(1)>=PRIVATE && input.LA(1)<=PUBLIC)||(input.LA(1)>=231 && input.LA(1)<=232) ) {
                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 {
        }
        return retval;
    }
    // $ANTLR end "modifier"

    public static class type_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "type"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:850:1: type : ( qualifiedType | arrayType | pointerType | '\"$toocomplex\"' );
    public final ForteAST.type_return type() throws RecognitionException {
        ForteAST.type_return retval = new ForteAST.type_return();
        retval.start = input.LT(1);

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:851:5: ( qualifiedType | arrayType | pointerType | '\"$toocomplex\"' )
            int alt117=4;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                alt117=1;
                }
                break;
            case ARRAY_TYPE:
                {
                alt117=2;
                }
                break;
            case POINTER_TYPE:
                {
                alt117=3;
                }
                break;
            case 233:
                {
                alt117=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 117, 0, input);

                throw nvae;
            }

            switch (alt117) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:851:9: qualifiedType
                    {
                    pushFollow(FOLLOW_qualifiedType_in_type3679);
                    qualifiedType();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:852:8: arrayType
                    {
                    pushFollow(FOLLOW_arrayType_in_type3688);
                    arrayType();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:853:9: pointerType
                    {
                    pushFollow(FOLLOW_pointerType_in_type3698);
                    pointerType();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:854:8: '\"$toocomplex\"'
                    {
                    match(input,233,FOLLOW_233_in_type3707); if (state.failed) return retval;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "type"

    public static class qualifiedType_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "qualifiedType"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:859: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/ToolModel/src/tool/model/grammar/ForteAST.g:861:4: ( IDENTIFIER ( DOT IDENTIFIER )? )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:861:6: IDENTIFIER ( DOT IDENTIFIER )?
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedType3730); if (state.failed) return retval;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:861:17: ( DOT IDENTIFIER )?
            int alt118=2;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==DOT) ) {
                int LA118_1 = input.LA(2);

                if ( (LA118_1==IDENTIFIER) ) {
                    alt118=1;
                }
            }
            switch (alt118) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:861:18: DOT IDENTIFIER
                    {
                    match(input,DOT,FOLLOW_DOT_in_qualifiedType3733); if (state.failed) return retval;
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_qualifiedType3735); if (state.failed) return retval;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "qualifiedType"

    public static class qualifiedName_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "qualifiedName"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:864:1: qualifiedName : ( name | ^( DOT qualifiedName name ) );
    public final ForteAST.qualifiedName_return qualifiedName() throws RecognitionException {
        ForteAST.qualifiedName_return retval = new ForteAST.qualifiedName_return();
        retval.start = input.LT(1);

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:865:7: ( name | ^( DOT qualifiedName name ) )
            int alt119=2;
            int LA119_0 = input.LA(1);

            if ( (LA119_0==NO_PARAM_NAME||(LA119_0>=BEGIN && LA119_0<=FROM)||(LA119_0>=END && LA119_0<=PROPERTY)||LA119_0==CLASS||LA119_0==METHOD||(LA119_0>=FORWARD && LA119_0<=IS)||(LA119_0>=INTERFACE && LA119_0<=STRUCT)||(LA119_0>=NIL && LA119_0<=SERVICE)||(LA119_0>=TRANSACTION && LA119_0<=IMPLEMENTS)||(LA119_0>=ATTRIBUTE && LA119_0<=WHERE)||(LA119_0>=RETURN && LA119_0<=TO)||(LA119_0>=EXIT && LA119_0<=TASK)||LA119_0==AND||(LA119_0>=NOT && LA119_0<=OF)||(LA119_0>=ENUM && LA119_0<=UNION)||LA119_0==234) ) {
                alt119=1;
            }
            else if ( (LA119_0==DOT) ) {
                alt119=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 119, 0, input);

                throw nvae;
            }
            switch (alt119) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:865:9: name
                    {
                    pushFollow(FOLLOW_name_in_qualifiedName3756);
                    name();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:866:9: ^( DOT qualifiedName name )
                    {
                    match(input,DOT,FOLLOW_DOT_in_qualifiedName3767); if (state.failed) return retval;

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

                    state._fsp--;
                    if (state.failed) return retval;
                    pushFollow(FOLLOW_name_in_qualifiedName3771);
                    name();

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

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "qualifiedName"


    // $ANTLR start "reservedPrefix"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:870:1: reservedPrefix : ( SELF | SUPER | TASK | TRANSACTION );
    public final void reservedPrefix() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:871:3: ( SELF | SUPER | TASK | TRANSACTION )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==TRANSACTION||input.LA(1)==TASK||(input.LA(1)>=SELF && input.LA(1)<=SUPER) ) {
                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 {
        }
        return ;
    }
    // $ANTLR end "reservedPrefix"


    // $ANTLR start "arrayType"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:878:1: arrayType : ^( ARRAY_TYPE qualifiedType ) ;
    public final void arrayType() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:879:3: ( ^( ARRAY_TYPE qualifiedType ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:879:5: ^( ARRAY_TYPE qualifiedType )
            {
            match(input,ARRAY_TYPE,FOLLOW_ARRAY_TYPE_in_arrayType3824); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_qualifiedType_in_arrayType3826);
            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 {
        }
        return ;
    }
    // $ANTLR end "arrayType"


    // $ANTLR start "arrayDeclarator"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:882:1: arrayDeclarator : ^( ARRAY_CSTYLE C_ARRAY_RANGE ) ;
    public final void arrayDeclarator() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:883:5: ( ^( ARRAY_CSTYLE C_ARRAY_RANGE ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:883:9: ^( ARRAY_CSTYLE C_ARRAY_RANGE )
            {
            match(input,ARRAY_CSTYLE,FOLLOW_ARRAY_CSTYLE_in_arrayDeclarator3846); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,C_ARRAY_RANGE,FOLLOW_C_ARRAY_RANGE_in_arrayDeclarator3848); if (state.failed) return ;

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "arrayDeclarator"


    // $ANTLR start "pointerType"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:887:1: pointerType : ^( POINTER_TYPE type ) ;
    public final void pointerType() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:888:2: ( ^( POINTER_TYPE type ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:888:4: ^( POINTER_TYPE type )
            {
            match(input,POINTER_TYPE,FOLLOW_POINTER_TYPE_in_pointerType3868); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_pointerType3870);
            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 {
        }
        return ;
    }
    // $ANTLR end "pointerType"


    // $ANTLR start "cStruct"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:937:1: cStruct : ^( STRUCT IDENTIFIER ( IDENTIFIER type )+ ) ;
    public final void cStruct() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:938:2: ( ^( STRUCT IDENTIFIER ( IDENTIFIER type )+ ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:938:4: ^( STRUCT IDENTIFIER ( IDENTIFIER type )+ )
            {
            match(input,STRUCT,FOLLOW_STRUCT_in_cStruct3930); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cStruct3932); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:938:24: ( IDENTIFIER type )+
            int cnt120=0;
            loop120:
            do {
                int alt120=2;
                int LA120_0 = input.LA(1);

                if ( (LA120_0==IDENTIFIER) ) {
                    alt120=1;
                }


                switch (alt120) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:938:25: IDENTIFIER type
                  {
                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cStruct3935); if (state.failed) return ;
                  pushFollow(FOLLOW_type_in_cStruct3937);
                  type();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "cStruct"


    // $ANTLR start "cEnum"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:941:1: cEnum : ^( ENUM IDENTIFIER ( cEnumMember )+ ) ;
    public final void cEnum() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:942:2: ( ^( ENUM IDENTIFIER ( cEnumMember )+ ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:942:4: ^( ENUM IDENTIFIER ( cEnumMember )+ )
            {
            match(input,ENUM,FOLLOW_ENUM_in_cEnum3952); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cEnum3954); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:942:22: ( cEnumMember )+
            int cnt121=0;
            loop121:
            do {
                int alt121=2;
                int LA121_0 = input.LA(1);

                if ( (LA121_0==IDENTIFIER) ) {
                    alt121=1;
                }


                switch (alt121) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: cEnumMember
                  {
                  pushFollow(FOLLOW_cEnumMember_in_cEnum3956);
                  cEnumMember();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "cEnum"


    // $ANTLR start "cEnumMember"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:944:1: cEnumMember : ^( IDENTIFIER literal ) ;
    public final void cEnumMember() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:945:3: ( ^( IDENTIFIER literal ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:945:5: ^( IDENTIFIER literal )
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cEnumMember3971); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_literal_in_cEnumMember3973);
            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 {
        }
        return ;
    }
    // $ANTLR end "cEnumMember"


    // $ANTLR start "cTypeDef"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:948:1: cTypeDef : ^( TYPEDEF IDENTIFIER type ) ;
    public final void cTypeDef() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:949:3: ( ^( TYPEDEF IDENTIFIER type ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:949:5: ^( TYPEDEF IDENTIFIER type )
            {
            match(input,TYPEDEF,FOLLOW_TYPEDEF_in_cTypeDef3988); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_cTypeDef3990); if (state.failed) return ;
            pushFollow(FOLLOW_type_in_cTypeDef3992);
            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 {
        }
        return ;
    }
    // $ANTLR end "cTypeDef"


    // $ANTLR start "array"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:953:1: array : IDENTIFIER ( arrayDeclarator )? ;
    public final void array() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:954:2: ( IDENTIFIER ( arrayDeclarator )? )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:954:4: IDENTIFIER ( arrayDeclarator )?
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_array4007); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:955:3: ( arrayDeclarator )?
            int alt122=2;
            int LA122_0 = input.LA(1);

            if ( (LA122_0==ARRAY_CSTYLE) ) {
                alt122=1;
            }
            switch (alt122) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: arrayDeclarator
                    {
                    pushFollow(FOLLOW_arrayDeclarator_in_array4012);
                    arrayDeclarator();

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

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "array"

    public static class name_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "name"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:965:1: name : ( reservedWord | IDENTIFIER | WIDGETIDENTFIER | NO_PARAM_NAME );
    public final ForteAST.name_return name() throws RecognitionException {
        ForteAST.name_return retval = new ForteAST.name_return();
        retval.start = input.LT(1);

        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:966:2: ( reservedWord | IDENTIFIER | WIDGETIDENTFIER | NO_PARAM_NAME )
            int alt123=4;
            switch ( input.LA(1) ) {
            case BEGIN:
            case FROM:
            case END:
            case INCLUDES:
            case HAS:
            case PROPERTY:
            case CLASS:
            case METHOD:
            case FORWARD:
            case IS:
            case INTERFACE:
            case CURSOR:
            case STRUCT:
            case NIL:
            case SERVICE:
            case TRANSACTION:
            case INHERITS:
            case IMPLEMENTS:
            case ATTRIBUTE:
            case VIRTUAL:
            case WHERE:
            case RETURN:
            case EXCEPTION:
            case EVENT:
            case HANDLER:
            case CONSTANT:
            case FOR:
            case IN:
            case DO:
            case TO:
            case EXIT:
            case CONTINUE:
            case CASE:
            case WHILE:
            case IF:
            case THEN:
            case ELSEIF:
            case RAISE:
            case POST:
            case LOOP:
            case PREREGISTER:
            case POSTREGISTER:
            case REGISTER:
            case WHEN:
            case ELSE:
            case COPY:
            case INPUT:
            case OUTPUT:
            case START:
            case TASK:
            case AND:
            case NOT:
            case NEW:
            case SELF:
            case SUPER:
            case OF:
            case ENUM:
            case TYPEDEF:
            case CHANGED:
            case FALSE:
            case PRIVATE:
            case PUBLIC:
            case TRUE:
            case UNION:
            case 234:
                {
                alt123=1;
                }
                break;
            case IDENTIFIER:
                {
                alt123=2;
                }
                break;
            case WIDGETIDENTFIER:
                {
                alt123=3;
                }
                break;
            case NO_PARAM_NAME:
                {
                alt123=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("", 123, 0, input);

                throw nvae;
            }

            switch (alt123) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:966:5: reservedWord
                    {
                    pushFollow(FOLLOW_reservedWord_in_name4029);
                    reservedWord();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:967:5: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_name4035); if (state.failed) return retval;

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:968:5: WIDGETIDENTFIER
                    {
                    match(input,WIDGETIDENTFIER,FOLLOW_WIDGETIDENTFIER_in_name4042); if (state.failed) return retval;

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:969:4: NO_PARAM_NAME
                    {
                    match(input,NO_PARAM_NAME,FOLLOW_NO_PARAM_NAME_in_name4048); if (state.failed) return retval;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "name"


    // $ANTLR start "reservedWord"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:972: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/ToolModel/src/tool/model/grammar/ForteAST.g:973: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/ToolModel/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==BEGIN||input.LA(1)==FROM||(input.LA(1)>=END && input.LA(1)<=PROPERTY)||input.LA(1)==CLASS||input.LA(1)==METHOD||(input.LA(1)>=FORWARD && input.LA(1)<=IS)||(input.LA(1)>=INTERFACE && input.LA(1)<=STRUCT)||(input.LA(1)>=NIL && input.LA(1)<=SERVICE)||(input.LA(1)>=TRANSACTION && input.LA(1)<=IMPLEMENTS)||input.LA(1)==ATTRIBUTE||(input.LA(1)>=VIRTUAL && input.LA(1)<=WHERE)||(input.LA(1)>=RETURN && input.LA(1)<=TO)||(input.LA(1)>=EXIT && input.LA(1)<=TASK)||input.LA(1)==AND||(input.LA(1)>=NOT && input.LA(1)<=OF)||(input.LA(1)>=ENUM && input.LA(1)<=UNION)||input.LA(1)==234 ) {
                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 {
        }
        return ;
    }
    // $ANTLR end "reservedWord"

    public static class literal_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "literal"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1042: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/ToolModel/src/tool/model/grammar/ForteAST.g:1043:5: ( HEXLITERAL | INTLITERAL | FLOATLITERAL | STRINGLITERAL | TRUE | FALSE | NIL )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:
            {
            if ( (input.LA(1)>=INTLITERAL && input.LA(1)<=STRINGLITERAL)||input.LA(1)==NIL||input.LA(1)==FALSE||input.LA(1)==TRUE||(input.LA(1)>=HEXLITERAL && input.LA(1)<=FLOATLITERAL) ) {
                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 {
        }
        return retval;
    }
    // $ANTLR end "literal"

    public static class booleanLiteral_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "booleanLiteral"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1052: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/ToolModel/src/tool/model/grammar/ForteAST.g:1053:3: ( TRUE | FALSE )
            // /Users/peter/Documents/workspace/ToolModel/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 {
        }
        return retval;
    }
    // $ANTLR end "booleanLiteral"


    // $ANTLR start "sql_statement"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1060:1: sql_statement : SQL ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select | sql_update ) ( SEMI | DO ) ;
    public final void sql_statement() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1061:3: ( SQL ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select | sql_update ) ( SEMI | DO ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1061:5: SQL ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select | sql_update ) ( SEMI | DO )
            {
            match(input,SQL,FOLLOW_SQL_in_sql_statement4565); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1062:4: ( sql_cursor | sql_delete | sql_execute_immediate | sql_execute_procedure | sql_fetch_cursor | sql_insert | sql_select | sql_update )
            int alt124=8;
            switch ( input.LA(1) ) {
            case SQL_CURSOR:
                {
                alt124=1;
                }
                break;
            case SQL_DELETE:
                {
                alt124=2;
                }
                break;
            case SQL_EXECUTE_IMMEDIATE:
                {
                alt124=3;
                }
                break;
            case SQL_EXECUTE_PROCEDURE:
                {
                alt124=4;
                }
                break;
            case SQL_CURSOR_FETCH:
                {
                alt124=5;
                }
                break;
            case SQL_INSERT:
                {
                alt124=6;
                }
                break;
            case SQL_SELECT:
                {
                alt124=7;
                }
                break;
            case SQL_UPDATE:
                {
                alt124=8;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 124, 0, input);

                throw nvae;
            }

            switch (alt124) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1062:5: sql_cursor
                    {
                    pushFollow(FOLLOW_sql_cursor_in_sql_statement4572);
                    sql_cursor();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1063:5: sql_delete
                    {
                    pushFollow(FOLLOW_sql_delete_in_sql_statement4578);
                    sql_delete();

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1064:5: sql_execute_immediate
                    {
                    pushFollow(FOLLOW_sql_execute_immediate_in_sql_statement4584);
                    sql_execute_immediate();

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1065:5: sql_execute_procedure
                    {
                    pushFollow(FOLLOW_sql_execute_procedure_in_sql_statement4590);
                    sql_execute_procedure();

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1066:5: sql_fetch_cursor
                    {
                    pushFollow(FOLLOW_sql_fetch_cursor_in_sql_statement4596);
                    sql_fetch_cursor();

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1067:5: sql_insert
                    {
                    pushFollow(FOLLOW_sql_insert_in_sql_statement4602);
                    sql_insert();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1068:5: sql_select
                    {
                    pushFollow(FOLLOW_sql_select_in_sql_statement4608);
                    sql_select();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1069:5: sql_update
                    {
                    pushFollow(FOLLOW_sql_update_in_sql_statement4614);
                    sql_update();

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

                    }
                    break;

            }

            if ( input.LA(1)==SEMI||input.LA(1)==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 {
        }
        return ;
    }
    // $ANTLR end "sql_statement"


    // $ANTLR start "sql_cursor"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1074:1: sql_cursor : ^( SQL_CURSOR IDENTIFIER sql_cursor_identifier ( arguments )? ( on_session )? ) ;
    public final void sql_cursor() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1075:3: ( ^( SQL_CURSOR IDENTIFIER sql_cursor_identifier ( arguments )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1075:5: ^( SQL_CURSOR IDENTIFIER sql_cursor_identifier ( arguments )? ( on_session )? )
            {
            match(input,SQL_CURSOR,FOLLOW_SQL_CURSOR_in_sql_cursor4639); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_cursor4641); if (state.failed) return ;
            pushFollow(FOLLOW_sql_cursor_identifier_in_sql_cursor4643);
            sql_cursor_identifier();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1075:51: ( 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/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_sql_cursor4645);
                    arguments();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1075:62: ( 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/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_cursor4648);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_cursor"


    // $ANTLR start "sql_cursor_identifier"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1079:1: sql_cursor_identifier : IDENTIFIER ;
    public final void sql_cursor_identifier() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1080:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1080:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_cursor_identifier4664); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_cursor_identifier"


    // $ANTLR start "sql_delete"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1083:1: sql_delete : ^( SQL_DELETE table_name ( sql_condition )? ( on_session )? ) ;
    public final void sql_delete() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1084:3: ( ^( SQL_DELETE table_name ( sql_condition )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1084:5: ^( SQL_DELETE table_name ( sql_condition )? ( on_session )? )
            {
            match(input,SQL_DELETE,FOLLOW_SQL_DELETE_in_sql_delete4680); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_table_name_in_sql_delete4682);
            table_name();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1084:29: ( sql_condition )?
            int alt127=2;
            int LA127_0 = input.LA(1);

            if ( (LA127_0==NO_PARAM_NAME||LA127_0==SQL_VARIABLE||LA127_0==SQL_SELECT||(LA127_0>=BEGIN && LA127_0<=FROM)||(LA127_0>=END && LA127_0<=EQ)||(LA127_0>=LPAREN && LA127_0<=CLASS)||LA127_0==METHOD||(LA127_0>=FORWARD && LA127_0<=IS)||(LA127_0>=INTERFACE && LA127_0<=STRUCT)||(LA127_0>=DOT && LA127_0<=SERVICE)||(LA127_0>=TRANSACTION && LA127_0<=IMPLEMENTS)||(LA127_0>=ATTRIBUTE && LA127_0<=WHERE)||(LA127_0>=RETURN && LA127_0<=TO)||(LA127_0>=EXIT && LA127_0<=TASK)||LA127_0==AND||(LA127_0>=NOT_EQUAL && LA127_0<=GT)||(LA127_0>=NOT && LA127_0<=OF)||(LA127_0>=ENUM && LA127_0<=UNION)||LA127_0==234) ) {
                alt127=1;
            }
            switch (alt127) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: sql_condition
                    {
                    pushFollow(FOLLOW_sql_condition_in_sql_delete4684);
                    sql_condition();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1084:44: ( 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/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_delete4687);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_delete"


    // $ANTLR start "sql_execute_immediate"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1087:1: sql_execute_immediate : ^( SQL_EXECUTE_IMMEDIATE ( STRINGLITERAL | IDENTIFIER ) ( on_session )? ) ;
    public final void sql_execute_immediate() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1088:3: ( ^( SQL_EXECUTE_IMMEDIATE ( STRINGLITERAL | IDENTIFIER ) ( on_session )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1088:5: ^( SQL_EXECUTE_IMMEDIATE ( STRINGLITERAL | IDENTIFIER ) ( on_session )? )
            {
            match(input,SQL_EXECUTE_IMMEDIATE,FOLLOW_SQL_EXECUTE_IMMEDIATE_in_sql_execute_immediate4705); 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/ToolModel/src/tool/model/grammar/ForteAST.g:1088:58: ( on_session )?
            int alt129=2;
            int LA129_0 = input.LA(1);

            if ( (LA129_0==ON_SESSION) ) {
                alt129=1;
            }
            switch (alt129) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_execute_immediate4715);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_execute_immediate"


    // $ANTLR start "sql_execute_procedure"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1091:1: sql_execute_procedure : ^( SQL_EXECUTE_PROCEDURE IDENTIFIER ( arguments )? ( on_session )? ) ;
    public final void sql_execute_procedure() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1092:3: ( ^( SQL_EXECUTE_PROCEDURE IDENTIFIER ( arguments )? ( on_session )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1092:5: ^( SQL_EXECUTE_PROCEDURE IDENTIFIER ( arguments )? ( on_session )? )
            {
            match(input,SQL_EXECUTE_PROCEDURE,FOLLOW_SQL_EXECUTE_PROCEDURE_in_sql_execute_procedure4734); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_execute_procedure4736); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1092:40: ( arguments )?
            int alt130=2;
            int LA130_0 = input.LA(1);

            if ( (LA130_0==ARGUMENT_LIST) ) {
                alt130=1;
            }
            switch (alt130) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_sql_execute_procedure4738);
                    arguments();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1092:51: ( on_session )?
            int alt131=2;
            int LA131_0 = input.LA(1);

            if ( (LA131_0==ON_SESSION) ) {
                alt131=1;
            }
            switch (alt131) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_execute_procedure4741);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_execute_procedure"


    // $ANTLR start "sql_fetch_cursor"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1096: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/ToolModel/src/tool/model/grammar/ForteAST.g:1097:3: ( ^( SQL_CURSOR_FETCH IDENTIFIER ( sql_cursor_next )? sql_variable_reference ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1097:5: ^( SQL_CURSOR_FETCH IDENTIFIER ( sql_cursor_next )? sql_variable_reference )
            {
            match(input,SQL_CURSOR_FETCH,FOLLOW_SQL_CURSOR_FETCH_in_sql_fetch_cursor4762); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_fetch_cursor4764); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1097:35: ( sql_cursor_next )?
            int alt132=2;
            int LA132_0 = input.LA(1);

            if ( (LA132_0==SQL_CURSOR_NEXT) ) {
                alt132=1;
            }
            switch (alt132) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: sql_cursor_next
                    {
                    pushFollow(FOLLOW_sql_cursor_next_in_sql_fetch_cursor4766);
                    sql_cursor_next();

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

                    }
                    break;

            }

            pushFollow(FOLLOW_sql_variable_reference_in_sql_fetch_cursor4769);
            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 {
        }
        return ;
    }
    // $ANTLR end "sql_fetch_cursor"


    // $ANTLR start "sql_cursor_next"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1100:1: sql_cursor_next : ^( SQL_CURSOR_NEXT IDENTIFIER ) ;
    public final void sql_cursor_next() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1101:3: ( ^( SQL_CURSOR_NEXT IDENTIFIER ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1101:5: ^( SQL_CURSOR_NEXT IDENTIFIER )
            {
            match(input,SQL_CURSOR_NEXT,FOLLOW_SQL_CURSOR_NEXT_in_sql_cursor_next4786); if (state.failed) return ;

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

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_cursor_next"


    // $ANTLR start "sql_insert"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1104: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/ToolModel/src/tool/model/grammar/ForteAST.g:1105:5: ( ^( SQL_INSERT table_name column_list sql_variable_reference ( on_session )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1105:7: ^( SQL_INSERT table_name column_list sql_variable_reference ( on_session )? )
            {
            match(input,SQL_INSERT,FOLLOW_SQL_INSERT_in_sql_insert4808); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_table_name_in_sql_insert4810);
            table_name();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FOLLOW_column_list_in_sql_insert4812);
            column_list();

            state._fsp--;
            if (state.failed) return ;
            pushFollow(FOLLOW_sql_variable_reference_in_sql_insert4815);
            sql_variable_reference();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1105:67: ( on_session )?
            int alt133=2;
            int LA133_0 = input.LA(1);

            if ( (LA133_0==ON_SESSION) ) {
                alt133=1;
            }
            switch (alt133) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_insert4817);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_insert"


    // $ANTLR start "sql_select"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1109: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/ToolModel/src/tool/model/grammar/ForteAST.g:1110: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/ToolModel/src/tool/model/grammar/ForteAST.g:1110: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_select4842); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:18: ( IDENTIFIER )?
            int alt134=2;
            int LA134_0 = input.LA(1);

            if ( (LA134_0==IDENTIFIER) ) {
                int LA134_1 = input.LA(2);

                if ( (LA134_1==IDENTIFIER||LA134_1==MULT) ) {
                    alt134=1;
                }
            }
            switch (alt134) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: IDENTIFIER
                    {
                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_sql_select4844); if (state.failed) return ;

                    }
                    break;

            }

            pushFollow(FOLLOW_column_list_in_sql_select4847);
            column_list();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:42: ( sql_variable_reference )?
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( (LA135_0==SQL_VARIABLE) ) {
                alt135=1;
            }
            switch (alt135) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: sql_variable_reference
                    {
                    pushFollow(FOLLOW_sql_variable_reference_in_sql_select4849);
                    sql_variable_reference();

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

                    }
                    break;

            }

            pushFollow(FOLLOW_table_list_in_sql_select4852);
            table_list();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:77: ( sql_condition )?
            int alt136=2;
            alt136 = dfa136.predict(input);
            switch (alt136) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: sql_condition
                    {
                    pushFollow(FOLLOW_sql_condition_in_sql_select4854);
                    sql_condition();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:92: ( group_by )?
            int alt137=2;
            int LA137_0 = input.LA(1);

            if ( (LA137_0==SQL_GROUP_BY) ) {
                alt137=1;
            }
            switch (alt137) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: group_by
                    {
                    pushFollow(FOLLOW_group_by_in_sql_select4857);
                    group_by();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:102: ( sql_condition )?
            int alt138=2;
            int LA138_0 = input.LA(1);

            if ( (LA138_0==NO_PARAM_NAME||LA138_0==SQL_VARIABLE||LA138_0==SQL_SELECT||(LA138_0>=BEGIN && LA138_0<=FROM)||(LA138_0>=END && LA138_0<=EQ)||(LA138_0>=LPAREN && LA138_0<=CLASS)||LA138_0==METHOD||(LA138_0>=FORWARD && LA138_0<=IS)||(LA138_0>=INTERFACE && LA138_0<=STRUCT)||(LA138_0>=DOT && LA138_0<=SERVICE)||(LA138_0>=TRANSACTION && LA138_0<=IMPLEMENTS)||(LA138_0>=ATTRIBUTE && LA138_0<=WHERE)||(LA138_0>=RETURN && LA138_0<=TO)||(LA138_0>=EXIT && LA138_0<=TASK)||LA138_0==AND||(LA138_0>=NOT_EQUAL && LA138_0<=GT)||(LA138_0>=NOT && LA138_0<=OF)||(LA138_0>=ENUM && LA138_0<=UNION)||LA138_0==234) ) {
                alt138=1;
            }
            switch (alt138) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: sql_condition
                    {
                    pushFollow(FOLLOW_sql_condition_in_sql_select4860);
                    sql_condition();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:117: ( order_by )?
            int alt139=2;
            int LA139_0 = input.LA(1);

            if ( (LA139_0==SQL_ORDER_BY) ) {
                alt139=1;
            }
            switch (alt139) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: order_by
                    {
                    pushFollow(FOLLOW_order_by_in_sql_select4863);
                    order_by();

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

                    }
                    break;

            }

            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:127: ( on_session )?
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==ON_SESSION) ) {
                alt140=1;
            }
            switch (alt140) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_select4866);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_select"


    // $ANTLR start "sql_update"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1113:1: sql_update : ^( SQL_UPDATE table_name ( on_session )? ) ;
    public final void sql_update() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1114:5: ( ^( SQL_UPDATE table_name ( on_session )? ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1114:7: ^( SQL_UPDATE table_name ( on_session )? )
            {
            match(input,SQL_UPDATE,FOLLOW_SQL_UPDATE_in_sql_update4884); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_table_name_in_sql_update4886);
            table_name();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1114:31: ( on_session )?
            int alt141=2;
            int LA141_0 = input.LA(1);

            if ( (LA141_0==ON_SESSION) ) {
                alt141=1;
            }
            switch (alt141) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: on_session
                    {
                    pushFollow(FOLLOW_on_session_in_sql_update4888);
                    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 {
        }
        return ;
    }
    // $ANTLR end "sql_update"


    // $ANTLR start "group_by"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1118:1: group_by : ^( SQL_GROUP_BY ( column_name IDENTIFIER )+ ) ;
    public final void group_by() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1119:5: ( ^( SQL_GROUP_BY ( column_name IDENTIFIER )+ ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1119:7: ^( SQL_GROUP_BY ( column_name IDENTIFIER )+ )
            {
            match(input,SQL_GROUP_BY,FOLLOW_SQL_GROUP_BY_in_group_by4912); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1119:22: ( column_name IDENTIFIER )+
            int cnt142=0;
            loop142:
            do {
                int alt142=2;
                int LA142_0 = input.LA(1);

                if ( (LA142_0==IDENTIFIER) ) {
                    alt142=1;
                }


                switch (alt142) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1119:23: column_name IDENTIFIER
                  {
                  pushFollow(FOLLOW_column_name_in_group_by4915);
                  column_name();

                  state._fsp--;
                  if (state.failed) return ;
                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_group_by4917); if (state.failed) return ;

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "group_by"


    // $ANTLR start "order_by"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1121:1: order_by : ^( SQL_ORDER_BY ( column_name IDENTIFIER )+ ) ;
    public final void order_by() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1122:5: ( ^( SQL_ORDER_BY ( column_name IDENTIFIER )+ ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1122:7: ^( SQL_ORDER_BY ( column_name IDENTIFIER )+ )
            {
            match(input,SQL_ORDER_BY,FOLLOW_SQL_ORDER_BY_in_order_by4937); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1122:22: ( column_name IDENTIFIER )+
            int cnt143=0;
            loop143:
            do {
                int alt143=2;
                int LA143_0 = input.LA(1);

                if ( (LA143_0==IDENTIFIER) ) {
                    alt143=1;
                }


                switch (alt143) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1122:23: column_name IDENTIFIER
                  {
                  pushFollow(FOLLOW_column_name_in_order_by4940);
                  column_name();

                  state._fsp--;
                  if (state.failed) return ;
                  match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_order_by4942); if (state.failed) return ;

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "order_by"


    // $ANTLR start "on_session"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1125:1: on_session : ^( ON_SESSION expression ) ;
    public final void on_session() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1126:5: ( ^( ON_SESSION expression ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1126:8: ^( ON_SESSION expression )
            {
            match(input,ON_SESSION,FOLLOW_ON_SESSION_in_on_session4968); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            pushFollow(FOLLOW_expression_in_on_session4970);
            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 {
        }
        return ;
    }
    // $ANTLR end "on_session"


    // $ANTLR start "sql_variable_reference"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1130:1: sql_variable_reference : ^( SQL_VARIABLE ( expression )+ ) ;
    public final void sql_variable_reference() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1131:3: ( ^( SQL_VARIABLE ( expression )+ ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1131:5: ^( SQL_VARIABLE ( expression )+ )
            {
            match(input,SQL_VARIABLE,FOLLOW_SQL_VARIABLE_in_sql_variable_reference4995); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1131:20: ( expression )+
            int cnt144=0;
            loop144:
            do {
                int alt144=2;
                int LA144_0 = input.LA(1);

                if ( (LA144_0==EXPR) ) {
                    alt144=1;
                }


                switch (alt144) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: expression
                  {
                  pushFollow(FOLLOW_expression_in_sql_variable_reference4997);
                  expression();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_variable_reference"


    // $ANTLR start "column_list"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1135:1: column_list : ( MULT | column_name ( COMMA column_name )* );
    public final void column_list() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1136:3: ( MULT | column_name ( COMMA column_name )* )
            int alt146=2;
            int LA146_0 = input.LA(1);

            if ( (LA146_0==MULT) ) {
                alt146=1;
            }
            else if ( (LA146_0==IDENTIFIER) ) {
                alt146=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 146, 0, input);

                throw nvae;
            }
            switch (alt146) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1136:5: MULT
                    {
                    match(input,MULT,FOLLOW_MULT_in_column_list5017); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1137:5: column_name ( COMMA column_name )*
                    {
                    pushFollow(FOLLOW_column_name_in_column_list5024);
                    column_name();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1137:17: ( COMMA column_name )*
                    loop145:
                    do {
                        int alt145=2;
                        int LA145_0 = input.LA(1);

                        if ( (LA145_0==COMMA) ) {
                            alt145=1;
                        }


                        switch (alt145) {
                      case 1 :
                          // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1137:18: COMMA column_name
                          {
                          match(input,COMMA,FOLLOW_COMMA_in_column_list5027); if (state.failed) return ;
                          pushFollow(FOLLOW_column_name_in_column_list5029);
                          column_name();

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

                          }
                          break;

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


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "column_list"


    // $ANTLR start "column_name"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1140:1: column_name : IDENTIFIER ;
    public final void column_name() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1141:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1141:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_column_name5047); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "column_name"


    // $ANTLR start "table_list"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1144:1: table_list : ^( SQL_TABLE_NAMES ( table_name )+ ) ;
    public final void table_list() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1145:3: ( ^( SQL_TABLE_NAMES ( table_name )+ ) )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1145:5: ^( SQL_TABLE_NAMES ( table_name )+ )
            {
            match(input,SQL_TABLE_NAMES,FOLLOW_SQL_TABLE_NAMES_in_table_list5061); if (state.failed) return ;

            match(input, Token.DOWN, null); if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1145:23: ( table_name )+
            int cnt147=0;
            loop147:
            do {
                int alt147=2;
                int LA147_0 = input.LA(1);

                if ( (LA147_0==IDENTIFIER) ) {
                    alt147=1;
                }


                switch (alt147) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: table_name
                  {
                  pushFollow(FOLLOW_table_name_in_table_list5063);
                  table_name();

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

                  }
                  break;

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


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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "table_list"


    // $ANTLR start "table_name"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1148:1: table_name : IDENTIFIER ;
    public final void table_name() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1149:3: ( IDENTIFIER )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1149:5: IDENTIFIER
            {
            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_table_name5080); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "table_name"


    // $ANTLR start "sql_condition"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:1: sql_condition : sql_logical_term ( OR sql_logical_term )* ;
    public final void sql_condition() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:15: ( sql_logical_term ( OR sql_logical_term )* )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:17: sql_logical_term ( OR sql_logical_term )*
            {
            pushFollow(FOLLOW_sql_logical_term_in_sql_condition5095);
            sql_logical_term();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:34: ( OR sql_logical_term )*
            loop148:
            do {
                int alt148=2;
                int LA148_0 = input.LA(1);

                if ( (LA148_0==OR) ) {
                    int LA148_2 = input.LA(2);

                    if ( (synpred318_ForteAST()) ) {
                        alt148=1;
                    }


                }


                switch (alt148) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:36: OR sql_logical_term
                  {
                  match(input,OR,FOLLOW_OR_in_sql_condition5099); if (state.failed) return ;
                  pushFollow(FOLLOW_sql_logical_term_in_sql_condition5101);
                  sql_logical_term();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_condition"


    // $ANTLR start "sql_logical_term"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1156:1: sql_logical_term : sql_logical_factor ( AND sql_logical_factor )* ;
    public final void sql_logical_term() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1157:7: ( sql_logical_factor ( AND sql_logical_factor )* )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1157:9: sql_logical_factor ( AND sql_logical_factor )*
            {
            pushFollow(FOLLOW_sql_logical_factor_in_sql_logical_term5120);
            sql_logical_factor();

            state._fsp--;
            if (state.failed) return ;
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1157:28: ( AND sql_logical_factor )*
            loop149:
            do {
                int alt149=2;
                int LA149_0 = input.LA(1);

                if ( (LA149_0==AND) ) {
                    int LA149_2 = input.LA(2);

                    if ( (synpred319_ForteAST()) ) {
                        alt149=1;
                    }


                }


                switch (alt149) {
              case 1 :
                  // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1157:30: AND sql_logical_factor
                  {
                  match(input,AND,FOLLOW_AND_in_sql_logical_term5124); if (state.failed) return ;
                  pushFollow(FOLLOW_sql_logical_factor_in_sql_logical_term5126);
                  sql_logical_factor();

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

                  }
                  break;

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


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_logical_term"


    // $ANTLR start "sql_logical_factor"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1160: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/ToolModel/src/tool/model/grammar/ForteAST.g:1161: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 alt154=8;
            alt154 = dfa154.predict(input);
            switch (alt154) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1162:7: sql_simple sql_comparison_op sql_simple
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5155);
                    sql_simple();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_sql_comparison_op_in_sql_logical_factor5157);
                    sql_comparison_op();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5159);
                    sql_simple();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1163:10: sql_simple ( NOT )? IN
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5172);
                    sql_simple();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1163:21: ( NOT )?
                    int alt150=2;
                    int LA150_0 = input.LA(1);

                    if ( (LA150_0==NOT) ) {
                        alt150=1;
                    }
                    switch (alt150) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5174); if (state.failed) return ;

                            }
                            break;

                    }

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

                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1164:10: sql_simple ( NOT )? IDENTIFIER
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5189);
                    sql_simple();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1164:21: ( NOT )?
                    int alt151=2;
                    int LA151_0 = input.LA(1);

                    if ( (LA151_0==NOT) ) {
                        alt151=1;
                    }
                    switch (alt151) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5191); if (state.failed) return ;

                            }
                            break;

                    }

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

                    }
                    break;
                case 4 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1165:10: sql_simple ( NOT )? IDENTIFIER
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5206);
                    sql_simple();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1165:21: ( NOT )?
                    int alt152=2;
                    int LA152_0 = input.LA(1);

                    if ( (LA152_0==NOT) ) {
                        alt152=1;
                    }
                    switch (alt152) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5208); if (state.failed) return ;

                            }
                            break;

                    }

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

                    }
                    break;
                case 5 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1166:10: sql_simple IS ( NOT )? IDENTIFIER
                    {
                    pushFollow(FOLLOW_sql_simple_in_sql_logical_factor5223);
                    sql_simple();

                    state._fsp--;
                    if (state.failed) return ;
                    match(input,IS,FOLLOW_IS_in_sql_logical_factor5225); if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1166:24: ( NOT )?
                    int alt153=2;
                    int LA153_0 = input.LA(1);

                    if ( (LA153_0==NOT) ) {
                        alt153=1;
                    }
                    switch (alt153) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5227); if (state.failed) return ;

                            }
                            break;

                    }

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

                    }
                    break;
                case 6 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1167:10: quantified_factor
                    {
                    pushFollow(FOLLOW_quantified_factor_in_sql_logical_factor5242);
                    quantified_factor();

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

                    }
                    break;
                case 7 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1168:10: NOT sql_condition
                    {
                    match(input,NOT,FOLLOW_NOT_in_sql_logical_factor5255); if (state.failed) return ;
                    pushFollow(FOLLOW_sql_condition_in_sql_logical_factor5257);
                    sql_condition();

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

                    }
                    break;
                case 8 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1169:10: LPAREN sql_condition RPAREN
                    {
                    match(input,LPAREN,FOLLOW_LPAREN_in_sql_logical_factor5269); if (state.failed) return ;
                    pushFollow(FOLLOW_sql_condition_in_sql_logical_factor5271);
                    sql_condition();

                    state._fsp--;
                    if (state.failed) return ;
                    match(input,RPAREN,FOLLOW_RPAREN_in_sql_logical_factor5273); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_logical_factor"


    // $ANTLR start "sql_simple"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1172:1: sql_simple : ( sql_variable_reference | qualifiedName );
    public final void sql_simple() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1173:2: ( sql_variable_reference | qualifiedName )
            int alt155=2;
            int LA155_0 = input.LA(1);

            if ( (LA155_0==SQL_VARIABLE) ) {
                alt155=1;
            }
            else if ( (LA155_0==NO_PARAM_NAME||(LA155_0>=BEGIN && LA155_0<=FROM)||(LA155_0>=END && LA155_0<=PROPERTY)||LA155_0==CLASS||LA155_0==METHOD||(LA155_0>=FORWARD && LA155_0<=IS)||(LA155_0>=INTERFACE && LA155_0<=STRUCT)||(LA155_0>=DOT && LA155_0<=SERVICE)||(LA155_0>=TRANSACTION && LA155_0<=IMPLEMENTS)||(LA155_0>=ATTRIBUTE && LA155_0<=WHERE)||(LA155_0>=RETURN && LA155_0<=TO)||(LA155_0>=EXIT && LA155_0<=TASK)||LA155_0==AND||(LA155_0>=NOT && LA155_0<=OF)||(LA155_0>=ENUM && LA155_0<=UNION)||LA155_0==234) ) {
                alt155=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 155, 0, input);

                throw nvae;
            }
            switch (alt155) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1173:4: sql_variable_reference
                    {
                    pushFollow(FOLLOW_sql_variable_reference_in_sql_simple5290);
                    sql_variable_reference();

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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1174:4: qualifiedName
                    {
                    pushFollow(FOLLOW_qualifiedName_in_sql_simple5295);
                    qualifiedName();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "sql_simple"


    // $ANTLR start "quantified_factor"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1177: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/ToolModel/src/tool/model/grammar/ForteAST.g:1178:7: ( ^( sql_comparison_op sql_simple subquery ( IDENTIFIER )? ) | ( ( NOT )? IDENTIFIER subquery ) | subquery )
            int alt158=3;
            switch ( input.LA(1) ) {
            case IDENTIFIER:
                {
                int LA158_1 = input.LA(2);

                if ( (LA158_1==DOWN) ) {
                    alt158=1;
                }
                else if ( (LA158_1==SQL_SELECT) ) {
                    alt158=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 158, 1, input);

                    throw nvae;
                }
                }
                break;
            case NOT:
                {
                alt158=2;
                }
                break;
            case EQ:
            case NOT_EQUAL:
            case LTEQ:
            case GTEQ:
            case LT:
            case GT:
                {
                alt158=1;
                }
                break;
            case SQL_SELECT:
                {
                alt158=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("", 158, 0, input);

                throw nvae;
            }

            switch (alt158) {
                case 1 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1179:7: ^( sql_comparison_op sql_simple subquery ( IDENTIFIER )? )
                    {
                    pushFollow(FOLLOW_sql_comparison_op_in_quantified_factor5319);
                    sql_comparison_op();

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

                    match(input, Token.DOWN, null); if (state.failed) return ;
                    pushFollow(FOLLOW_sql_simple_in_quantified_factor5321);
                    sql_simple();

                    state._fsp--;
                    if (state.failed) return ;
                    pushFollow(FOLLOW_subquery_in_quantified_factor5323);
                    subquery();

                    state._fsp--;
                    if (state.failed) return ;
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1179:47: ( IDENTIFIER )?
                    int alt156=2;
                    int LA156_0 = input.LA(1);

                    if ( (LA156_0==IDENTIFIER) ) {
                        alt156=1;
                    }
                    switch (alt156) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: IDENTIFIER
                            {
                            match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_quantified_factor5325); if (state.failed) return ;

                            }
                            break;

                    }


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

                    }
                    break;
                case 2 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1180:9: ( ( NOT )? IDENTIFIER subquery )
                    {
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1180:9: ( ( NOT )? IDENTIFIER subquery )
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1180:11: ( NOT )? IDENTIFIER subquery
                    {
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1180:11: ( NOT )?
                    int alt157=2;
                    int LA157_0 = input.LA(1);

                    if ( (LA157_0==NOT) ) {
                        alt157=1;
                    }
                    switch (alt157) {
                        case 1 :
                            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_quantified_factor5339); if (state.failed) return ;

                            }
                            break;

                    }

                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_quantified_factor5342); if (state.failed) return ;
                    pushFollow(FOLLOW_subquery_in_quantified_factor5344);
                    subquery();

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

                    }


                    }
                    break;
                case 3 :
                    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1181:9: subquery
                    {
                    pushFollow(FOLLOW_subquery_in_quantified_factor5357);
                    subquery();

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

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "quantified_factor"


    // $ANTLR start "sql_comparison_op"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1184: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/ToolModel/src/tool/model/grammar/ForteAST.g:1185:7: ( EQ | LT | GT | NOT_EQUAL | LTEQ | GTEQ | IDENTIFIER )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:
            {
            if ( input.LA(1)==IDENTIFIER||input.LA(1)==EQ||(input.LA(1)>=NOT_EQUAL && input.LA(1)<=GT) ) {
                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 {
        }
        return ;
    }
    // $ANTLR end "sql_comparison_op"


    // $ANTLR start "subquery"
    // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1189:1: subquery : sql_select ;
    public final void subquery() throws RecognitionException {
        try {
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1190:5: ( sql_select )
            // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1191:9: sql_select
            {
            pushFollow(FOLLOW_sql_select_in_subquery5434);
            sql_select();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "subquery"

    // $ANTLR start synpred2_ForteAST
    public final void synpred2_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:70:4: ( forward )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:70:4: forward
        {
        pushFollow(FOLLOW_forward_in_synpred2_ForteAST108);
        forward();

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

        }
    }
    // $ANTLR end synpred2_ForteAST

    // $ANTLR start synpred104_ForteAST
    public final void synpred104_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:591:47: ( expression )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:591:47: expression
        {
        pushFollow(FOLLOW_expression_in_synpred104_ForteAST2061);
        expression();

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

        }
    }
    // $ANTLR end synpred104_ForteAST

    // $ANTLR start synpred152_ForteAST
    public final void synpred152_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:754:9: ( ^( EQ expr expr ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:754:9: ^( EQ expr expr )
        {
        match(input,EQ,FOLLOW_EQ_in_synpred152_ForteAST2843); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred152_ForteAST2845);
        expr();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred152_ForteAST2847);
        expr();

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

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

        }
    }
    // $ANTLR end synpred152_ForteAST

    // $ANTLR start synpred154_ForteAST
    public final void synpred154_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:8: ( ^( EQ expr ( START_TASK expr ( completion )? ) ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:8: ^( EQ expr ( START_TASK expr ( completion )? ) )
        {
        match(input,EQ,FOLLOW_EQ_in_synpred154_ForteAST2858); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred154_ForteAST2860);
        expr();

        state._fsp--;
        if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:18: ( START_TASK expr ( completion )? )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:19: START_TASK expr ( completion )?
        {
        match(input,START_TASK,FOLLOW_START_TASK_in_synpred154_ForteAST2863); if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred154_ForteAST2865);
        expr();

        state._fsp--;
        if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:755:35: ( completion )?
        int alt167=2;
        int LA167_0 = input.LA(1);

        if ( (LA167_0==COMPLETION) ) {
            alt167=1;
        }
        switch (alt167) {
            case 1 :
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: completion
                {
                pushFollow(FOLLOW_completion_in_synpred154_ForteAST2867);
                completion();

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

                }
                break;

        }


        }


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

        }
    }
    // $ANTLR end synpred154_ForteAST

    // $ANTLR start synpred160_ForteAST
    public final void synpred160_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:761:9: ( ^( AND expr expr ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:761:9: ^( AND expr expr )
        {
        match(input,AND,FOLLOW_AND_in_synpred160_ForteAST2963); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred160_ForteAST2965);
        expr();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred160_ForteAST2967);
        expr();

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

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

        }
    }
    // $ANTLR end synpred160_ForteAST

    // $ANTLR start synpred173_ForteAST
    public final void synpred173_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:774:9: ( ^( NOT expr ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:774:9: ^( NOT expr )
        {
        match(input,NOT,FOLLOW_NOT_in_synpred173_ForteAST3167); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred173_ForteAST3169);
        expr();

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

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

        }
    }
    // $ANTLR end synpred173_ForteAST

    // $ANTLR start synpred174_ForteAST
    public final void synpred174_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:775:9: ( ^( CAST_EXPR type expr ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:775:9: ^( CAST_EXPR type expr )
        {
        match(input,CAST_EXPR,FOLLOW_CAST_EXPR_in_synpred174_ForteAST3181); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_type_in_synpred174_ForteAST3183);
        type();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_expr_in_synpred174_ForteAST3185);
        expr();

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

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

        }
    }
    // $ANTLR end synpred174_ForteAST

    // $ANTLR start synpred175_ForteAST
    public final void synpred175_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:776:9: ( primaryExpression )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:776:9: primaryExpression
        {
        pushFollow(FOLLOW_primaryExpression_in_synpred175_ForteAST3196);
        primaryExpression();

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

        }
    }
    // $ANTLR end synpred175_ForteAST

    // $ANTLR start synpred177_ForteAST
    public final void synpred177_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:783:5: ( ^( DOT ( primaryExpression ( IDENTIFIER ) ) ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:783:5: ^( DOT ( primaryExpression ( IDENTIFIER ) ) )
        {
        match(input,DOT,FOLLOW_DOT_in_synpred177_ForteAST3235); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:784:13: ( primaryExpression ( IDENTIFIER ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:784:17: primaryExpression ( IDENTIFIER )
        {
        pushFollow(FOLLOW_primaryExpression_in_synpred177_ForteAST3253);
        primaryExpression();

        state._fsp--;
        if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:785:17: ( IDENTIFIER )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:785:21: IDENTIFIER
        {
        match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred177_ForteAST3275); if (state.failed) return ;

        }


        }


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

        }
    }
    // $ANTLR end synpred177_ForteAST

    // $ANTLR start synpred179_ForteAST
    public final void synpred179_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:790:6: ( qualifiedIdentExpression )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:790:6: qualifiedIdentExpression
        {
        pushFollow(FOLLOW_qualifiedIdentExpression_in_synpred179_ForteAST3331);
        qualifiedIdentExpression();

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

        }
    }
    // $ANTLR end synpred179_ForteAST

    // $ANTLR start synpred180_ForteAST
    public final void synpred180_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:791:7: ( ^( METHOD_CALL primaryExpression arguments ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:791:7: ^( METHOD_CALL primaryExpression arguments )
        {
        match(input,METHOD_CALL,FOLLOW_METHOD_CALL_in_synpred180_ForteAST3340); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_primaryExpression_in_synpred180_ForteAST3342);
        primaryExpression();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_arguments_in_synpred180_ForteAST3344);
        arguments();

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

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

        }
    }
    // $ANTLR end synpred180_ForteAST

    // $ANTLR start synpred181_ForteAST
    public final void synpred181_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:792:6: ( ^( ARRAY_INDEX primaryExpression expression ) )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:792:6: ^( ARRAY_INDEX primaryExpression expression )
        {
        match(input,ARRAY_INDEX,FOLLOW_ARRAY_INDEX_in_synpred181_ForteAST3353); if (state.failed) return ;

        match(input, Token.DOWN, null); if (state.failed) return ;
        pushFollow(FOLLOW_primaryExpression_in_synpred181_ForteAST3356);
        primaryExpression();

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

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

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

        }
    }
    // $ANTLR end synpred181_ForteAST

    // $ANTLR start synpred184_ForteAST
    public final void synpred184_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:794:6: ( literal )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:794:6: literal
        {
        pushFollow(FOLLOW_literal_in_synpred184_ForteAST3382);
        literal();

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

        }
    }
    // $ANTLR end synpred184_ForteAST

    // $ANTLR start synpred186_ForteAST
    public final void synpred186_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:796:7: ( reservedPrefix )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:796:7: reservedPrefix
        {
        pushFollow(FOLLOW_reservedPrefix_in_synpred186_ForteAST3398);
        reservedPrefix();

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

        }
    }
    // $ANTLR end synpred186_ForteAST

    // $ANTLR start synpred306_ForteAST
    public final void synpred306_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:77: ( sql_condition )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1110:77: sql_condition
        {
        pushFollow(FOLLOW_sql_condition_in_synpred306_ForteAST4854);
        sql_condition();

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

        }
    }
    // $ANTLR end synpred306_ForteAST

    // $ANTLR start synpred318_ForteAST
    public final void synpred318_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:36: ( OR sql_logical_term )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1154:36: OR sql_logical_term
        {
        match(input,OR,FOLLOW_OR_in_synpred318_ForteAST5099); if (state.failed) return ;
        pushFollow(FOLLOW_sql_logical_term_in_synpred318_ForteAST5101);
        sql_logical_term();

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

        }
    }
    // $ANTLR end synpred318_ForteAST

    // $ANTLR start synpred319_ForteAST
    public final void synpred319_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1157:30: ( AND sql_logical_factor )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1157:30: AND sql_logical_factor
        {
        match(input,AND,FOLLOW_AND_in_synpred319_ForteAST5124); if (state.failed) return ;
        pushFollow(FOLLOW_sql_logical_factor_in_synpred319_ForteAST5126);
        sql_logical_factor();

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

        }
    }
    // $ANTLR end synpred319_ForteAST

    // $ANTLR start synpred320_ForteAST
    public final void synpred320_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1162:7: ( sql_simple sql_comparison_op sql_simple )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1162:7: sql_simple sql_comparison_op sql_simple
        {
        pushFollow(FOLLOW_sql_simple_in_synpred320_ForteAST5155);
        sql_simple();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_sql_comparison_op_in_synpred320_ForteAST5157);
        sql_comparison_op();

        state._fsp--;
        if (state.failed) return ;
        pushFollow(FOLLOW_sql_simple_in_synpred320_ForteAST5159);
        sql_simple();

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

        }
    }
    // $ANTLR end synpred320_ForteAST

    // $ANTLR start synpred322_ForteAST
    public final void synpred322_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1163:10: ( sql_simple ( NOT )? IN )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1163:10: sql_simple ( NOT )? IN
        {
        pushFollow(FOLLOW_sql_simple_in_synpred322_ForteAST5172);
        sql_simple();

        state._fsp--;
        if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1163:21: ( NOT )?
        int alt169=2;
        int LA169_0 = input.LA(1);

        if ( (LA169_0==NOT) ) {
            alt169=1;
        }
        switch (alt169) {
            case 1 :
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred322_ForteAST5174); if (state.failed) return ;

                }
                break;

        }

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

        }
    }
    // $ANTLR end synpred322_ForteAST

    // $ANTLR start synpred324_ForteAST
    public final void synpred324_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1164:10: ( sql_simple ( NOT )? IDENTIFIER )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1164:10: sql_simple ( NOT )? IDENTIFIER
        {
        pushFollow(FOLLOW_sql_simple_in_synpred324_ForteAST5189);
        sql_simple();

        state._fsp--;
        if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1164:21: ( NOT )?
        int alt170=2;
        int LA170_0 = input.LA(1);

        if ( (LA170_0==NOT) ) {
            alt170=1;
        }
        switch (alt170) {
            case 1 :
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred324_ForteAST5191); if (state.failed) return ;

                }
                break;

        }

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

        }
    }
    // $ANTLR end synpred324_ForteAST

    // $ANTLR start synpred326_ForteAST
    public final void synpred326_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1165:10: ( sql_simple ( NOT )? IDENTIFIER )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1165:10: sql_simple ( NOT )? IDENTIFIER
        {
        pushFollow(FOLLOW_sql_simple_in_synpred326_ForteAST5206);
        sql_simple();

        state._fsp--;
        if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1165:21: ( NOT )?
        int alt171=2;
        int LA171_0 = input.LA(1);

        if ( (LA171_0==NOT) ) {
            alt171=1;
        }
        switch (alt171) {
            case 1 :
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred326_ForteAST5208); if (state.failed) return ;

                }
                break;

        }

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

        }
    }
    // $ANTLR end synpred326_ForteAST

    // $ANTLR start synpred328_ForteAST
    public final void synpred328_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1166:10: ( sql_simple IS ( NOT )? IDENTIFIER )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1166:10: sql_simple IS ( NOT )? IDENTIFIER
        {
        pushFollow(FOLLOW_sql_simple_in_synpred328_ForteAST5223);
        sql_simple();

        state._fsp--;
        if (state.failed) return ;
        match(input,IS,FOLLOW_IS_in_synpred328_ForteAST5225); if (state.failed) return ;
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1166:24: ( NOT )?
        int alt172=2;
        int LA172_0 = input.LA(1);

        if ( (LA172_0==NOT) ) {
            alt172=1;
        }
        switch (alt172) {
            case 1 :
                // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:0:0: NOT
                {
                match(input,NOT,FOLLOW_NOT_in_synpred328_ForteAST5227); if (state.failed) return ;

                }
                break;

        }

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

        }
    }
    // $ANTLR end synpred328_ForteAST

    // $ANTLR start synpred329_ForteAST
    public final void synpred329_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1167:10: ( quantified_factor )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1167:10: quantified_factor
        {
        pushFollow(FOLLOW_quantified_factor_in_synpred329_ForteAST5242);
        quantified_factor();

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

        }
    }
    // $ANTLR end synpred329_ForteAST

    // $ANTLR start synpred330_ForteAST
    public final void synpred330_ForteAST_fragment() throws RecognitionException {  
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1168:10: ( NOT sql_condition )
        // /Users/peter/Documents/workspace/ToolModel/src/tool/model/grammar/ForteAST.g:1168:10: NOT sql_condition
        {
        match(input,NOT,FOLLOW_NOT_in_synpred330_ForteAST5255); if (state.failed) return ;
        pushFollow(FOLLOW_sql_condition_in_synpred330_ForteAST5257);
        sql_condition();

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

        }
    }
    // $ANTLR end synpred330_ForteAST

    // Delegated rules

    public final boolean synpred2_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_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 synpred184_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred184_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 synpred326_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred326_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 synpred324_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred324_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 synpred180_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred180_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 synpred152_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred152_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 synpred328_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred328_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 synpred181_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred181_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 synpred186_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred186_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 synpred177_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred177_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 synpred330_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred330_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 synpred160_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred160_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 synpred154_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred154_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 synpred179_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred179_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 synpred329_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred329_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 synpred174_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred174_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 synpred306_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred306_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 synpred319_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred319_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 synpred175_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred175_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 synpred173_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred173_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 synpred104_ForteAST() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred104_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;
    }


    protected DFA2 dfa2 = new DFA2(this);
    protected DFA58 dfa58 = new DFA58(this);
    protected DFA106 dfa106 = new DFA106(this);
    protected DFA108 dfa108 = new DFA108(this);
    protected DFA136 dfa136 = new DFA136(this);
    protected DFA154 dfa154 = new DFA154(this);
    static final String DFA2_eotS =
        "\27\uffff";
    static final String DFA2_eofS =
        "\27\uffff";
    static final String DFA2_minS =
        "\1\3\1\uffff\5\2\5\157\5\3\5\0\1\uffff";
    static final String DFA2_maxS =
        "\1\u00eb\1\uffff\5\2\5\157\5\3\5\0\1\uffff";
    static final String DFA2_acceptS =
        "\1\uffff\1\2\24\uffff\1\1";
    static final String DFA2_specialS =
        "\21\uffff\1\0\1\3\1\2\1\1\1\4\1\uffff}>";
    static final String[] DFA2_transitionS = {
            "\1\1\2\uffff\1\2\1\3\1\4\1\5\1\6\25\uffff\1\1\11\uffff\2\1\40"+
            "\uffff\11\1\56\uffff\2\1\2\uffff\1\1\1\uffff\1\1\17\uffff\1"+
            "\1\56\uffff\2\1\41\uffff\1\1",
            "",
            "\1\7",
            "\1\10",
            "\1\11",
            "\1\12",
            "\1\13",
            "\1\14",
            "\1\15",
            "\1\16",
            "\1\17",
            "\1\20",
            "\1\21",
            "\1\22",
            "\1\23",
            "\1\24",
            "\1\25",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            ""
    };

    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
    static final short[][] DFA2_transition;

    static {
        int numStates = DFA2_transitionS.length;
        DFA2_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
        }
    }

    class DFA2 extends DFA {

        public DFA2(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 2;
            this.eot = DFA2_eot;
            this.eof = DFA2_eof;
            this.min = DFA2_min;
            this.max = DFA2_max;
            this.accept = DFA2_accept;
            this.special = DFA2_special;
            this.transition = DFA2_transition;
        }
        public String getDescription() {
            return "()* loopback of 70:4: ( forward )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TreeNodeStream input = (TreeNodeStream)_input;
          int _s = s;
            switch ( s ) {
                    case 0 :
                        int LA2_17 = input.LA(1);

                        
                        int index2_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_ForteAST()) ) {s = 22;}

                        else if ( (true) ) {s = 1;}

                        
                        input.seek(index2_17);
                        if ( s>=0 ) return s;
                        break;
                    case 1 :
                        int LA2_20 = input.LA(1);

                        
                        int index2_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_ForteAST()) ) {s = 22;}

                        else if ( (true) ) {s = 1;}

                        
                        input.seek(index2_20);
                        if ( s>=0 ) return s;
                        break;
                    case 2 :
                        int LA2_19 = input.LA(1);

                        
                        int index2_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_ForteAST()) ) {s = 22;}

                        else if ( (true) ) {s = 1;}

                        
                        input.seek(index2_19);
                        if ( s>=0 ) return s;
                        break;
                    case 3 :
                        int LA2_18 = input.LA(1);

                        
                        int index2_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_ForteAST()) ) {s = 22;}

                        else if ( (true) ) {s = 1;}

                        
                        input.seek(index2_18);
                        if ( s>=0 ) return s;
                        break;
                    case 4 :
                        int LA2_21 = input.LA(1);

                        
                        int index2_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_ForteAST()) ) {s = 22;}

                        else if ( (true) ) {s = 1;}

                        
                        input.seek(index2_21);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 2, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA58_eotS =
        "\23\uffff";
    static final String DFA58_eofS =
        "\23\uffff";
    static final String DFA58_minS =
        "\1\3\1\0\21\uffff";
    static final String DFA58_maxS =
        "\1\u00a7\1\0\21\uffff";
    static final String DFA58_acceptS =
        "\2\uffff\1\2\17\uffff\1\1";
    static final String DFA58_specialS =
        "\1\uffff\1\0\21\uffff}>";
    static final String[] DFA58_transitionS = {
            "\1\2\16\uffff\1\1\3\2\17\uffff\2\2\30\uffff\1\2\125\uffff\1"+
            "\2\3\uffff\1\2\5\uffff\5\2\2\uffff\2\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA58_eot = DFA.unpackEncodedString(DFA58_eotS);
    static final short[] DFA58_eof = DFA.unpackEncodedString(DFA58_eofS);
    static final char[] DFA58_min = DFA.unpackEncodedStringToUnsignedChars(DFA58_minS);
    static final char[] DFA58_max = DFA.unpackEncodedStringToUnsignedChars(DFA58_maxS);
    static final short[] DFA58_accept = DFA.unpackEncodedString(DFA58_acceptS);
    static final short[] DFA58_special = DFA.unpackEncodedString(DFA58_specialS);
    static final short[][] DFA58_transition;

    static {
        int numStates = DFA58_transitionS.length;
        DFA58_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA58_transition[i] = DFA.unpackEncodedString(DFA58_transitionS[i]);
        }
    }

    class DFA58 extends DFA {

        public DFA58(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 58;
            this.eot = DFA58_eot;
            this.eof = DFA58_eof;
            this.min = DFA58_min;
            this.max = DFA58_max;
            this.accept = DFA58_accept;
            this.special = DFA58_special;
            this.transition = DFA58_transition;
        }
        public String getDescription() {
            return "591:47: ( expression )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TreeNodeStream input = (TreeNodeStream)_input;
          int _s = s;
            switch ( s ) {
                    case 0 :
                        int LA58_1 = input.LA(1);

                        
                        int index58_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred104_ForteAST()) ) {s = 18;}

                        else if ( (true) ) {s = 2;}

                        
                        input.seek(index58_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 58, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA106_eotS =
        "\51\uffff";
    static final String DFA106_eofS =
        "\51\uffff";
    static final String DFA106_minS =
        "\1\16\1\0\5\uffff\1\0\14\uffff\2\0\23\uffff";
    static final String DFA106_maxS =
        "\1\u00ec\1\0\5\uffff\1\0\14\uffff\2\0\23\uffff";
    static final String DFA106_acceptS =
        "\2\uffff\1\3\1\4\1\5\1\6\1\7\1\uffff\1\11\1\12\1\13\1\14\1\15\1"+
        "\16\1\17\1\20\1\21\1\22\1\23\1\24\2\uffff\1\27\14\uffff\1\30\1\1"+
        "\1\2\1\10\1\25\1\26";
    static final String DFA106_specialS =
        "\1\uffff\1\0\5\uffff\1\1\14\uffff\1\2\1\3\23\uffff}>";
    static final String[] DFA106_transitionS = {
            "\1\25\12\uffff\2\26\2\uffff\1\26\20\uffff\1\43\1\uffff\1\26"+
            "\6\uffff\1\26\1\22\1\23\43\uffff\1\26\20\uffff\3\26\1\uffff"+
            "\4\26\1\1\2\26\1\uffff\1\26\1\uffff\1\26\1\uffff\2\26\1\uffff"+
            "\3\26\1\uffff\3\26\2\uffff\3\26\3\uffff\4\26\1\uffff\11\26\1"+
            "\uffff\24\26\1\5\1\7\1\2\1\3\1\4\1\10\1\11\1\12\1\14\1\13\1"+
            "\15\1\16\1\17\1\20\1\21\1\24\4\26\1\uffff\12\26\30\uffff\1\26"+
            "\1\uffff\1\6",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA106_eot = DFA.unpackEncodedString(DFA106_eotS);
    static final short[] DFA106_eof = DFA.unpackEncodedString(DFA106_eofS);
    static final char[] DFA106_min = DFA.unpackEncodedStringToUnsignedChars(DFA106_minS);
    static final char[] DFA106_max = DFA.unpackEncodedStringToUnsignedChars(DFA106_maxS);
    static final short[] DFA106_accept = DFA.unpackEncodedString(DFA106_acceptS);
    static final short[] DFA106_special = DFA.unpackEncodedString(DFA106_specialS);
    static final short[][] DFA106_transition;

    static {
        int numStates = DFA106_transitionS.length;
        DFA106_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA106_transition[i] = DFA.unpackEncodedString(DFA106_transitionS[i]);
        }
    }

    class DFA106 extends DFA {

        public DFA106(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 106;
            this.eot = DFA106_eot;
            this.eof = DFA106_eof;
            this.min = DFA106_min;
            this.max = DFA106_max;
            this.accept = DFA106_accept;
            this.special = DFA106_special;
            this.transition = DFA106_transition;
        }
        public String getDescription() {
            return "753:1: expr : ( ^( EQ expr expr ) | ^( EQ expr ( START_TASK expr ( completion )? ) ) | ^( 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 int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TreeNodeStream input = (TreeNodeStream)_input;
          int _s = s;
            switch ( s ) {
                    case 0 :
                        int LA106_1 = input.LA(1);

                        
                        int index106_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred152_ForteAST()) ) {s = 36;}

                        else if ( (synpred154_ForteAST()) ) {s = 37;}

                        
                        input.seek(index106_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 :
                        int LA106_7 = input.LA(1);

                        
                        int index106_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred160_ForteAST()) ) {s = 38;}

                        else if ( (synpred175_ForteAST()) ) {s = 22;}

                        
                        input.seek(index106_7);
                        if ( s>=0 ) return s;
                        break;
                    case 2 :
                        int LA106_20 = input.LA(1);

                        
                        int index106_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred173_ForteAST()) ) {s = 39;}

                        else if ( (synpred175_ForteAST()) ) {s = 22;}

                        
                        input.seek(index106_20);
                        if ( s>=0 ) return s;
                        break;
                    case 3 :
                        int LA106_21 = input.LA(1);

                        
                        int index106_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred174_ForteAST()) ) {s = 40;}

                        else if ( (synpred175_ForteAST()) ) {s = 22;}

                        
                        input.seek(index106_21);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 106, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA108_eotS =
        "\23\uffff";
    static final String DFA108_eofS =
        "\23\uffff";
    static final String DFA108_minS =
        "\1\16\1\0\1\uffff\1\0\3\uffff\2\0\1\uffff\1\0\10\uffff";
    static final String DFA108_maxS =
        "\1\u00ea\1\0\1\uffff\1\0\3\uffff\2\0\1\uffff\1\0\10\uffff";
    static final String DFA108_acceptS =
        "\2\uffff\1\2\1\uffff\1\3\4\uffff\1\6\1\uffff\1\7\1\10\1\uffff\1"+
        "\12\1\1\1\4\1\5\1\11";
    static final String DFA108_specialS =
        "\1\uffff\1\0\1\uffff\1\1\3\uffff\1\2\1\3\1\uffff\1\4\10\uffff}>";
    static final String[] DFA108_transitionS = {
            "\1\16\12\uffff\1\7\1\14\2\uffff\1\10\22\uffff\1\11\6\uffff\1"+
            "\2\45\uffff\1\4\20\uffff\3\4\1\uffff\4\4\1\uffff\2\13\1\uffff"+
            "\1\4\1\uffff\1\4\1\uffff\2\4\1\uffff\3\4\1\uffff\1\1\1\3\1\4"+
            "\2\uffff\1\12\2\4\3\uffff\4\4\1\uffff\11\4\1\uffff\23\4\1\12"+
            "\1\uffff\1\4\15\uffff\2\4\2\12\1\4\1\uffff\3\4\1\3\2\4\1\3\1"+
            "\4\2\13\30\uffff\1\4",
            "\1\uffff",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA108_eot = DFA.unpackEncodedString(DFA108_eotS);
    static final short[] DFA108_eof = DFA.unpackEncodedString(DFA108_eofS);
    static final char[] DFA108_min = DFA.unpackEncodedStringToUnsignedChars(DFA108_minS);
    static final char[] DFA108_max = DFA.unpackEncodedStringToUnsignedChars(DFA108_maxS);
    static final short[] DFA108_accept = DFA.unpackEncodedString(DFA108_acceptS);
    static final short[] DFA108_special = DFA.unpackEncodedString(DFA108_specialS);
    static final short[][] DFA108_transition;

    static {
        int numStates = DFA108_transitionS.length;
        DFA108_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA108_transition[i] = DFA.unpackEncodedString(DFA108_transitionS[i]);
        }
    }

    class DFA108 extends DFA {

        public DFA108(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 108;
            this.eot = DFA108_eot;
            this.eof = DFA108_eof;
            this.min = DFA108_min;
            this.max = DFA108_max;
            this.accept = DFA108_accept;
            this.special = DFA108_special;
            this.transition = DFA108_transition;
        }
        public String getDescription() {
            return "782:1: primaryExpression : ( ^( DOT ( primaryExpression ( IDENTIFIER ) ) ) | parenthesizedExpression | qualifiedIdentExpression | ^( METHOD_CALL primaryExpression arguments ) | ^( ARRAY_INDEX primaryExpression expression ) | ^( LOCAL_DECLARATION IDENTIFIER type ( expression )? ) | literal | newExpression | reservedPrefix | ^( CAST_EXPR type expression ) );";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TreeNodeStream input = (TreeNodeStream)_input;
          int _s = s;
            switch ( s ) {
                    case 0 :
                        int LA108_1 = input.LA(1);

                        
                        int index108_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred177_ForteAST()) ) {s = 15;}

                        else if ( (synpred179_ForteAST()) ) {s = 4;}

                        
                        input.seek(index108_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 :
                        int LA108_3 = input.LA(1);

                        
                        int index108_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred179_ForteAST()) ) {s = 4;}

                        else if ( (synpred184_ForteAST()) ) {s = 11;}

                        
                        input.seek(index108_3);
                        if ( s>=0 ) return s;
                        break;
                    case 2 :
                        int LA108_7 = input.LA(1);

                        
                        int index108_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred179_ForteAST()) ) {s = 4;}

                        else if ( (synpred180_ForteAST()) ) {s = 16;}

                        
                        input.seek(index108_7);
                        if ( s>=0 ) return s;
                        break;
                    case 3 :
                        int LA108_8 = input.LA(1);

                        
                        int index108_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred179_ForteAST()) ) {s = 4;}

                        else if ( (synpred181_ForteAST()) ) {s = 17;}

                        
                        input.seek(index108_8);
                        if ( s>=0 ) return s;
                        break;
                    case 4 :
                        int LA108_10 = input.LA(1);

                        
                        int index108_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred179_ForteAST()) ) {s = 4;}

                        else if ( (synpred186_ForteAST()) ) {s = 18;}

                        
                        input.seek(index108_10);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 108, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA136_eotS =
        "\20\uffff";
    static final String DFA136_eofS =
        "\20\uffff";
    static final String DFA136_minS =
        "\1\3\12\0\5\uffff";
    static final String DFA136_maxS =
        "\1\u00ea\12\0\5\uffff";
    static final String DFA136_acceptS =
        "\13\uffff\1\2\3\uffff\1\1";
    static final String DFA136_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\5\uffff}>";
    static final String[] DFA136_transitionS = {
            "\1\13\131\uffff\1\5\2\uffff\1\13\1\1\4\uffff\1\11\2\13\5\uffff"+
            "\1\10\1\3\1\10\1\uffff\4\10\1\7\2\uffff\1\12\1\10\1\uffff\1"+
            "\10\1\uffff\2\10\1\uffff\3\10\1\uffff\1\6\2\10\2\uffff\3\10"+
            "\3\uffff\1\10\1\4\2\10\1\uffff\11\10\1\uffff\24\10\1\uffff\1"+
            "\10\3\uffff\5\7\5\uffff\1\2\4\10\1\uffff\10\10\32\uffff\1\10",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA136_eot = DFA.unpackEncodedString(DFA136_eotS);
    static final short[] DFA136_eof = DFA.unpackEncodedString(DFA136_eofS);
    static final char[] DFA136_min = DFA.unpackEncodedStringToUnsignedChars(DFA136_minS);
    static final char[] DFA136_max = DFA.unpackEncodedStringToUnsignedChars(DFA136_maxS);
    static final short[] DFA136_accept = DFA.unpackEncodedString(DFA136_acceptS);
    static final short[] DFA136_special = DFA.unpackEncodedString(DFA136_specialS);
    static final short[][] DFA136_transition;

    static {
        int numStates = DFA136_transitionS.length;
        DFA136_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA136_transition[i] = DFA.unpackEncodedString(DFA136_transitionS[i]);
        }
    }

    class DFA136 extends DFA {

        public DFA136(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 136;
            this.eot = DFA136_eot;
            this.eof = DFA136_eof;
            this.min = DFA136_min;
            this.max = DFA136_max;
            this.accept = DFA136_accept;
            this.special = DFA136_special;
            this.transition = DFA136_transition;
        }
        public String getDescription() {
            return "1110:77: ( sql_condition )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TreeNodeStream input = (TreeNodeStream)_input;
          int _s = s;
            switch ( s ) {
                    case 0 :
                        int LA136_1 = input.LA(1);

                        
                        int index136_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 :
                        int LA136_2 = input.LA(1);

                        
                        int index136_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 :
                        int LA136_3 = input.LA(1);

                        
                        int index136_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 :
                        int LA136_4 = input.LA(1);

                        
                        int index136_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 :
                        int LA136_5 = input.LA(1);

                        
                        int index136_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 :
                        int LA136_6 = input.LA(1);

                        
                        int index136_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 :
                        int LA136_7 = input.LA(1);

                        
                        int index136_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 :
                        int LA136_8 = input.LA(1);

                        
                        int index136_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 :
                        int LA136_9 = input.LA(1);

                        
                        int index136_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 :
                        int LA136_10 = input.LA(1);

                        
                        int index136_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred306_ForteAST()) ) {s = 15;}

                        else if ( (true) ) {s = 11;}

                        
                        input.seek(index136_10);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 136, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA154_eotS =
        "\21\uffff";
    static final String DFA154_eofS =
        "\21\uffff";
    static final String DFA154_minS =
        "\1\135\6\0\1\uffff\1\0\10\uffff";
    static final String DFA154_maxS =
        "\1\u00ea\6\0\1\uffff\1\0\10\uffff";
    static final String DFA154_acceptS =
        "\7\uffff\1\6\2\uffff\1\10\1\1\1\2\1\3\1\4\1\5\1\7";
    static final String DFA154_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\uffff\1\6\10\uffff}>";
    static final String[] DFA154_transitionS = {
            "\1\5\3\uffff\1\1\4\uffff\1\7\7\uffff\1\10\1\3\1\10\1\uffff\4"+
            "\10\1\7\2\uffff\1\12\1\10\1\uffff\1\10\1\uffff\2\10\1\uffff"+
            "\3\10\1\uffff\1\6\2\10\2\uffff\3\10\3\uffff\1\10\1\4\2\10\1"+
            "\uffff\11\10\1\uffff\24\10\1\uffff\1\10\3\uffff\5\7\5\uffff"+
            "\1\2\4\10\1\uffff\10\10\32\uffff\1\10",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA154_eot = DFA.unpackEncodedString(DFA154_eotS);
    static final short[] DFA154_eof = DFA.unpackEncodedString(DFA154_eofS);
    static final char[] DFA154_min = DFA.unpackEncodedStringToUnsignedChars(DFA154_minS);
    static final char[] DFA154_max = DFA.unpackEncodedStringToUnsignedChars(DFA154_maxS);
    static final short[] DFA154_accept = DFA.unpackEncodedString(DFA154_acceptS);
    static final short[] DFA154_special = DFA.unpackEncodedString(DFA154_specialS);
    static final short[][] DFA154_transition;

    static {
        int numStates = DFA154_transitionS.length;
        DFA154_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA154_transition[i] = DFA.unpackEncodedString(DFA154_transitionS[i]);
        }
    }

    class DFA154 extends DFA {

        public DFA154(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 154;
            this.eot = DFA154_eot;
            this.eof = DFA154_eof;
            this.min = DFA154_min;
            this.max = DFA154_max;
            this.accept = DFA154_accept;
            this.special = DFA154_special;
            this.transition = DFA154_transition;
        }
        public String getDescription() {
            return "1160: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 int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TreeNodeStream input = (TreeNodeStream)_input;
          int _s = s;
            switch ( s ) {
                    case 0 :
                        int LA154_1 = input.LA(1);

                        
                        int index154_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        
                        input.seek(index154_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 :
                        int LA154_2 = input.LA(1);

                        
                        int index154_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        else if ( (synpred329_ForteAST()) ) {s = 7;}

                        else if ( (synpred330_ForteAST()) ) {s = 16;}

                        
                        input.seek(index154_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 :
                        int LA154_3 = input.LA(1);

                        
                        int index154_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        else if ( (synpred329_ForteAST()) ) {s = 7;}

                        
                        input.seek(index154_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 :
                        int LA154_4 = input.LA(1);

                        
                        int index154_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        
                        input.seek(index154_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 :
                        int LA154_5 = input.LA(1);

                        
                        int index154_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        
                        input.seek(index154_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 :
                        int LA154_6 = input.LA(1);

                        
                        int index154_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        
                        input.seek(index154_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 :
                        int LA154_8 = input.LA(1);

                        
                        int index154_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred320_ForteAST()) ) {s = 11;}

                        else if ( (synpred322_ForteAST()) ) {s = 12;}

                        else if ( (synpred324_ForteAST()) ) {s = 13;}

                        else if ( (synpred326_ForteAST()) ) {s = 14;}

                        else if ( (synpred328_ForteAST()) ) {s = 15;}

                        
                        input.seek(index154_8);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 154, _s, input);
            error(nvae);
            throw nvae;
        }
    }

    public static final BitSet FOLLOW_PROJECT_in_project80 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_project84 = new BitSet(new long[]{0x0000200000000000L});
    public static final BitSet FOLLOW_planType_in_project95 = new BitSet(new long[]{0x00000C0100000FC8L,0x00000000001FF000L,0x0000000002000298L,0x0000080000000300L});
    public static final BitSet FOLLOW_supplierPlans_in_project101 = new BitSet(new long[]{0x00000C01000007C8L,0x00000000001FF000L,0x0000000002000298L,0x0000080000000300L});
    public static final BitSet FOLLOW_forward_in_project108 = new BitSet(new long[]{0x00000C01000007C8L,0x00000000001FF000L,0x0000000002000298L,0x0000080000000300L});
    public static final BitSet FOLLOW_constantDeclaration_in_project114 = new BitSet(new long[]{0x00000C01000007C8L,0x00000000001FF000L,0x0000000002000298L,0x0000080000000300L});
    public static final BitSet FOLLOW_forward_in_project122 = new BitSet(new long[]{0x00000C01000007C8L,0x00000000001FF000L,0x0000000000000298L,0x0000080000000300L});
    public static final BitSet FOLLOW_cDataTypeDeclatation_in_project128 = new BitSet(new long[]{0x00000C0100000008L,0x00000000001FF000L,0x0000000000000298L,0x0000080000000300L});
    public static final BitSet FOLLOW_objectTypeDeclaration_in_project135 = new BitSet(new long[]{0x00000C0100000008L,0x00000000001FF000L,0x0000000000000290L,0x0000080000000000L});
    public static final BitSet FOLLOW_serviceDeclaration_in_project142 = new BitSet(new long[]{0x0000000100000008L,0x00000000001FF000L,0x0000000000000290L,0x0000080000000000L});
    public static final BitSet FOLLOW_cursorDeclaration_in_project149 = new BitSet(new long[]{0x0000000100000008L,0x00000000001FF000L,0x0000000000000210L,0x0000080000000000L});
    public static final BitSet FOLLOW_methodImplementation_in_project156 = new BitSet(new long[]{0x0000000100000008L,0x00000000001FF000L,0x0000000000000210L});
    public static final BitSet FOLLOW_project_property_in_project163 = new BitSet(new long[]{0x0000000000000008L,0x00000000001FF000L,0x0000000000000210L});
    public static final BitSet FOLLOW_include_in_project170 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_classDeclaration_in_objectTypeDeclaration189 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interfaceDeclaration_in_objectTypeDeclaration194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_projectConstants207 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000002000000L});
    public static final BitSet FOLLOW_isLibrary_in_project_property224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_project_type_in_project_property230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_compatibility_level_in_project_property236 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_restricted_in_project_property242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_multithreaded_in_project_property248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_internal_in_project_property254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_library_name_in_project_property260 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_starting_method_in_project_property266 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_extended_property_in_project_property272 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_application_in_project_property278 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PLAN_TYPE_in_planType296 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_planType298 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SUPPLIER_PLANS_in_supplierPlans320 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_supplierPlan_in_supplierPlans322 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_supplierPlan339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PROP_IS_LIBRARY_in_isLibrary358 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_isLibrary360 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_CL_in_compatibility_level382 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_INTLITERAL_in_compatibility_level384 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_PROJ_TYPE_in_project_type403 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_project_type405 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_MULTI_THREAD_in_multithreaded424 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_multithreaded426 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_INTERNAL_in_internal442 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_internal444 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_LIBRARY_NAME_in_library_name460 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_library_name462 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_START_METHOD_in_starting_method479 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_starting_method483 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_starting_method487 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_APPLICATION_in_application505 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_application507 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_application509 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_forward_class_in_forward526 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_mapped_class_in_forward532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_interface_in_forward538 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_cursor_in_forward544 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_struct_in_forward550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FORWARD_CLASS_in_forward_class563 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_class565 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_MAPPED_CLASS_in_forward_mapped_class584 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_mapped_class586 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_INTERFACE_in_forward_interface604 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_interface606 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_CURSOR_in_forward_cursor624 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_cursor626 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORWARD_STRUCT_in_forward_struct646 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_forward_struct648 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_INCLUDE_in_include669 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_include672 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_include674 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UUID_in_uuid688 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_uuid690 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_property_in_declatrationTerminator708 = new BitSet(new long[]{0x0000000000000002L,0x0020000000000000L});
    public static final BitSet FOLLOW_cStruct_in_cDataTypeDeclatation722 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cEnum_in_cDataTypeDeclatation728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cTypeDef_in_cDataTypeDeclatation734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SERVICE_in_serviceDeclaration761 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_serviceDeclaration763 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_qualifiedType_in_serviceDeclaration765 = new BitSet(new long[]{0x0000000000000000L,0x00000000000007FCL});
    public static final BitSet FOLLOW_serviceAttribute_in_serviceDeclaration774 = new BitSet(new long[]{0x0000000000000000L,0x00000000800007FCL});
    public static final BitSet FOLLOW_UUID_in_serviceDeclaration782 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceDeclaration784 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_VIS_in_serviceAttribute804 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_serviceAttribute806 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_DIALOG_in_serviceAttribute817 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_dialogType_in_serviceAttribute819 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_FAILOVER_in_serviceAttribute830 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_serviceAttribute832 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_LOADBALANCE_in_serviceAttribute843 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_serviceAttribute845 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_PATH_in_serviceAttribute856 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute858 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_EXT_MGR_in_serviceAttribute870 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute872 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_RESOURCE_in_serviceAttribute883 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute885 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_USERNAME_in_serviceAttribute896 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute898 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SO_PASSWORD_in_serviceAttribute909 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_serviceAttribute911 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_dialogType0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PROPERTY_in_compound_property960 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_compound_property965 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_property_in_compound_property970 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L});
    public static final BitSet FOLLOW_EXTENDED_in_extended_property994 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_property_in_extended_property996 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L});
    public static final BitSet FOLLOW_PROPERTY_in_property1014 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_property1016 = new BitSet(new long[]{0x0000000000000000L,0x0180000000000000L,0x0000000000000040L,0x0000000000034800L});
    public static final BitSet FOLLOW_literal_in_property1018 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROPERTY_in_property1029 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_property1033 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_property1037 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_INTERFACE_DECLARATION_in_interfaceDeclaration1061 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_interfaceDeclaration1063 = new BitSet(new long[]{0x0000038C80000000L,0x002080001D814000L,0x0000000002000200L});
    public static final BitSet FOLLOW_qualifiedType_in_interfaceDeclaration1065 = new BitSet(new long[]{0x0000038C80000000L,0x002080001D814000L,0x0000000002000200L});
    public static final BitSet FOLLOW_component_definition_in_interfaceDeclaration1074 = new BitSet(new long[]{0x0000038C80000000L,0x002080001D814000L,0x0000000002000200L});
    public static final BitSet FOLLOW_classProperties_in_interfaceDeclaration1077 = new BitSet(new long[]{0x0000038C80000008L,0x002080001D814000L,0x0000000002000200L});
    public static final BitSet FOLLOW_CURSOR_DECLARATION_in_cursorDeclaration1097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CLASS_DECLARATION_in_classDeclaration1126 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_classDeclaration1128 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_isMappedClass_in_classDeclaration1142 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_qualifiedType_in_classDeclaration1164 = new BitSet(new long[]{0x0000038C80000000L,0x002080001D814000L,0x0000000002001200L,0x0000000000000100L});
    public static final BitSet FOLLOW_cEnum_in_classDeclaration1177 = new BitSet(new long[]{0x0000038C80000000L,0x002080001D814000L,0x0000000002001200L,0x0000000000000100L});
    public static final BitSet FOLLOW_component_definition_in_classDeclaration1184 = new BitSet(new long[]{0x0000038C80000000L,0x002080001D814000L,0x0000000002001200L});
    public static final BitSet FOLLOW_IMPLEMENTS_in_classDeclaration1194 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedType_in_classDeclaration1196 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_classProperties_in_classDeclaration1206 = new BitSet(new long[]{0x0000038C80000008L,0x012080001D814000L,0x0000000002000200L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_classDeclaration1209 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MAPPED_in_isMappedClass1231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_attributeDeclaration_in_component_definition1244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_windowAttributeDeclaration_in_component_definition1250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_virtualAttributeDeclaration_in_component_definition1256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventDeclaration_in_component_definition1262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_methodDeclaration_in_component_definition1268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventHandlerDeclaration_in_component_definition1274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_component_definition1280 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ATTRIBUTE_DECLARATION_in_attributeDeclaration1303 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_attributeDeclaration1305 = new BitSet(new long[]{0x0000000000000000L,0xD43DC00020000000L,0x0017FFFFBFEF1CCEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_name_in_attributeDeclaration1307 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_attributeDeclaration1309 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000008000L});
    public static final BitSet FOLLOW_GENERATED_in_attributeDeclaration1312 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WINDOW_ATTRIBUTE_DECLARATION_in_windowAttributeDeclaration1333 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_windowAttributeDeclaration1335 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
    public static final BitSet FOLLOW_WIDGETIDENTFIER_in_windowAttributeDeclaration1337 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_windowAttributeDeclaration1339 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
    public static final BitSet FOLLOW_GENERATED_in_windowAttributeDeclaration1342 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VIRTUAL_ATTRIBUTE_in_virtualAttributeDeclaration1359 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_virtualAttributeDeclaration1361 = new BitSet(new long[]{0x0000000000000000L,0xD43DC00020000000L,0x0017FFFFBFEF1CCEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_name_in_virtualAttributeDeclaration1363 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_virtualAttributeDeclaration1365 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_getExpression_in_virtualAttributeDeclaration1368 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000002L});
    public static final BitSet FOLLOW_setExpression_in_virtualAttributeDeclaration1370 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GET_EXPRESSION_in_getExpression1389 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_getExpression1391 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SET_EXPRESSION_in_setExpression1405 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_setExpression1407 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_METHOD_DECLARATION_in_methodDeclaration1436 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_methodDeclaration1443 = new BitSet(new long[]{0x0000000000000000L,0xD43DC00020000000L,0x0017FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_qualifiedName_in_methodDeclaration1445 = new BitSet(new long[]{0x0000100040000008L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_formalParameterDecls_in_methodDeclaration1448 = new BitSet(new long[]{0x0000000040000008L,0x0000000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_methodReturnDeclaration_in_methodDeclaration1463 = new BitSet(new long[]{0x0000000040000008L});
    public static final BitSet FOLLOW_methodCompletion_in_methodDeclaration1478 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_METHOD_COMPLETION_in_methodCompletion1497 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodCompletion1499 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_methodCompletion1501 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_METHOD_IMPLEMENTATION_in_methodImplementation1516 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_methodImplementation1523 = new BitSet(new long[]{0x80001060003C0008L,0x0000000000000000L,0x000000CF82600000L});
    public static final BitSet FOLLOW_formalParameterDecls_in_methodImplementation1530 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82600000L});
    public static final BitSet FOLLOW_methodReturnDeclaration_in_methodImplementation1538 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82600000L});
    public static final BitSet FOLLOW_statement_in_methodImplementation1546 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82600000L});
    public static final BitSet FOLLOW_exceptionBlock_in_methodImplementation1554 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_HANDLER_DECLARATION_in_eventHandlerDeclaration1573 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_eventHandlerDeclaration1575 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_eventHandlerDeclaration1577 = new BitSet(new long[]{0x0000100000000008L});
    public static final BitSet FOLLOW_formalParameterDecls_in_eventHandlerDeclaration1580 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_HANDLER_IMPLEMENTATION_in_eventHandlerImplementation1599 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_eventHandlerImplementation1601 = new BitSet(new long[]{0x0002100000000008L});
    public static final BitSet FOLLOW_formalParameterDecls_in_eventHandlerImplementation1603 = new BitSet(new long[]{0x0002000000000008L});
    public static final BitSet FOLLOW_whenEvent_in_eventHandlerImplementation1606 = new BitSet(new long[]{0x0002000000000008L});
    public static final BitSet FOLLOW_EVENT_DECLARATION_in_eventDeclaration1625 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_eventDeclaration1627 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_eventDeclaration1629 = new BitSet(new long[]{0x0000100000000008L});
    public static final BitSet FOLLOW_formalParameterDecls_in_eventDeclaration1632 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CONSTANT_in_constantDeclaration1656 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_constantDeclaration1658 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_constantDeclaration1661 = new BitSet(new long[]{0x0000000000000000L,0x0180000000000000L,0x0000000000000040L,0x0000000000034800L});
    public static final BitSet FOLLOW_literal_in_constantDeclaration1663 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PROP_RESTRICTED_in_restricted1695 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_booleanLiteral_in_restricted1697 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_file1717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_onOff1728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_superName1739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_isDefault1750 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SHARED_in_classProperties1767 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1769 = new BitSet(new long[]{0x0000000000000008L,0x0000000002600000L});
    public static final BitSet FOLLOW_TRANSACTIONAL_in_classProperties1777 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1779 = new BitSet(new long[]{0x0000000000000008L,0x0000000002600000L});
    public static final BitSet FOLLOW_MONITORED_in_classProperties1787 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1789 = new BitSet(new long[]{0x0000000000000008L,0x0000000002600000L});
    public static final BitSet FOLLOW_restricted_in_classProperties1796 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DISTRIBUTED_in_classProperties1803 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classPropertyDetail_in_classProperties1805 = new BitSet(new long[]{0x0000000000000008L,0x0000000002600000L});
    public static final BitSet FOLLOW_CLASSLINEAGE_in_classProperties1813 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classLineageEntry_in_classProperties1815 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_property_in_classProperties1822 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_extended_property_in_classProperties1828 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_internal_in_classProperties1834 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_superName_in_classLineageEntry1851 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STRINGLITERAL_in_classLineageEntry1853 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ALLOW_in_classPropertyDetail1869 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_onOff_in_classPropertyDetail1871 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_OVERRIDE_in_classPropertyDetail1883 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_onOff_in_classPropertyDetail1885 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DEFAULT_in_classPropertyDetail1894 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_onOff_in_classPropertyDetail1896 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_expression_in_statement1924 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_statement1930 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_exitStatment_in_statement1937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_continueStatment_in_statement1943 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_postStatement_in_statement1949 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_raiseStatement_in_statement1955 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_returnStatement_in_statement1961 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_whileDoStatement_in_statement1967 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forStatement_in_statement1973 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_caseStatement_in_statement1979 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventLoopStatement_in_statement1985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_eventCaseStatement_in_statement1993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ifStatement_in_statement1999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_in_statement2005 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_EACH_in_forStatement2031 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_name_in_forStatement2033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L});
    public static final BitSet FOLLOW_IN_in_forStatement2036 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forStatement2038 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_statement_in_forStatement2041 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_FOR_COUNT_in_forStatement2053 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_name_in_forStatement2055 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_expression_in_forStatement2057 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_expression_in_forStatement2059 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_expression_in_forStatement2061 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_forStatement2064 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_FOR_SQL_in_forStatement2077 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_nameType_in_forStatement2079 = new BitSet(new long[]{0x80000060003C0008L,0x0000000040000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_forStatement2082 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_NAME_TYPE_in_nameType2102 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_name_in_nameType2104 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_nameType2106 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXIT_in_exitStatment2124 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_label_in_exitStatment2126 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CONTINUE_in_continueStatment2139 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_label_in_continueStatment2141 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_RETURN_in_returnStatement2154 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_returnStatement2156 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CASE_in_caseStatement2169 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_caseStatement2171 = new BitSet(new long[]{0x0004000000000008L,0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_whenCase_in_caseStatement2173 = new BitSet(new long[]{0x0004000000000008L,0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_elseDO_in_caseStatement2176 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WHILE_in_whileDoStatement2190 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_whileDoStatement2193 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_whileDoStatement2196 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_IF_in_ifStatement2211 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_ifStatement2213 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000020EF82200000L});
    public static final BitSet FOLLOW_statement_in_ifStatement2215 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000020EF82200000L});
    public static final BitSet FOLLOW_elseIf_in_ifStatement2218 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000202000000000L});
    public static final BitSet FOLLOW_elseDO_in_ifStatement2221 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ELSEIF_in_elseIf2235 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_elseIf2237 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_elseIf2239 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_RAISE_in_raiseStatement2254 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_raiseStatement2256 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POST_in_postStatement2270 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_postStatement2272 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_LOOP_in_eventLoopStatement2284 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_preregisterStatement_in_eventLoopStatement2286 = new BitSet(new long[]{0x0002800000000008L,0x0000000000000000L,0x0000040000000000L});
    public static final BitSet FOLLOW_postregisterStatement_in_eventLoopStatement2289 = new BitSet(new long[]{0x0002800000000008L});
    public static final BitSet FOLLOW_whenEvent_in_eventLoopStatement2292 = new BitSet(new long[]{0x0002800000000008L});
    public static final BitSet FOLLOW_label_in_eventLoopStatement2295 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EVENT_CASE_in_eventCaseStatement2310 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_preregisterStatement_in_eventCaseStatement2312 = new BitSet(new long[]{0x0002800000000008L,0x0000000000000000L,0x0000040000000000L});
    public static final BitSet FOLLOW_postregisterStatement_in_eventCaseStatement2315 = new BitSet(new long[]{0x0002800000000008L});
    public static final BitSet FOLLOW_whenEvent_in_eventCaseStatement2318 = new BitSet(new long[]{0x0002800000000008L});
    public static final BitSet FOLLOW_label_in_eventCaseStatement2321 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PREREGISTER_in_preregisterStatement2336 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_registerStatement_in_preregisterStatement2338 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000080000000000L});
    public static final BitSet FOLLOW_POSTREGISTER_in_postregisterStatement2352 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_registerStatement_in_postregisterStatement2354 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000080000000000L});
    public static final BitSet FOLLOW_REGISTER_in_registerStatement2369 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_registerStatement2371 = new BitSet(new long[]{0x0000100000000008L});
    public static final BitSet FOLLOW_formalParameterDecls_in_registerStatement2373 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_START_TASK_in_startTask2389 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_startTask2391 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_completion_in_startTask2394 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_COMPLETION_in_completion2411 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_237_in_completion2413 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_COMPLETION_in_completion2422 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_EVENT_in_completion2424 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_TRANSACTION_in_completion2428 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_completion2430 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WHEN_EXCEPTION_in_whenException2450 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_whenException2452 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_whenException2454 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_whenException2456 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_WHEN_CASE_in_whenCase2470 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_whenCase2472 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_whenCase2474 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_WHEN_EVENT_in_whenEvent2490 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_whenEvent2492 = new BitSet(new long[]{0x80000060003D0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_eventArguments_in_whenEvent2494 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_statement_in_whenEvent2497 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_EXCEPTION_in_exceptionBlock2513 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_whenException_in_exceptionBlock2515 = new BitSet(new long[]{0x0008000000000008L,0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_elseDO_in_exceptionBlock2518 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ELSE_in_elseDO2539 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_statement_in_elseDO2541 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82200000L});
    public static final BitSet FOLLOW_RETURN_in_methodReturnDeclaration2557 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_methodReturnDeclaration2559 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000400000000000L});
    public static final BitSet FOLLOW_COPY_in_methodReturnDeclaration2561 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_normalParameterDecl_in_formalParameterDecls2585 = new BitSet(new long[]{0x0000100000000002L});
    public static final BitSet FOLLOW_PARAMETER_in_normalParameterDecl2608 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_paramName_in_normalParameterDecl2610 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_normalParameterDecl2612 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0001C00000000000L});
    public static final BitSet FOLLOW_paramModifiers_in_normalParameterDecl2614 = new BitSet(new long[]{0x0000000000040008L});
    public static final BitSet FOLLOW_expression_in_normalParameterDecl2616 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_name_in_paramName2633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COPY_in_paramModifiers2651 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0001800000000000L});
    public static final BitSet FOLLOW_INPUT_in_paramModifiers2661 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_OUTPUT_in_paramModifiers2663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INPUT_in_paramModifiers2673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OUTPUT_in_paramModifiers2684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_paramModifiers2694 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LABEL_in_label2718 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_label2720 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BLOCK_in_block2740 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_transaction_in_block2742 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82600000L});
    public static final BitSet FOLLOW_statement_in_block2747 = new BitSet(new long[]{0x80000060003C0008L,0x0000000000000000L,0x000000CF82600000L});
    public static final BitSet FOLLOW_exceptionBlock_in_block2752 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TRANSACTION_in_transaction2765 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_transaction2767 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PARENTESIZED_EXPR_in_parenthesizedExpression2789 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_parenthesizedExpression2791 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXPR_in_expression2816 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expression2818 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EQ_in_expr2843 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2845 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2847 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EQ_in_expr2858 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2860 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_START_TASK_in_expr2863 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2865 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_completion_in_expr2867 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_OR_in_expr2881 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2883 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2885 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_XOR_in_expr2897 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2899 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2901 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_AND_in_expr2913 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2915 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2917 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2919 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_OR_in_expr2931 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2933 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2935 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_XOR_in_expr2947 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2949 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2951 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_AND_in_expr2963 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2965 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2967 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_EQUAL_in_expr2979 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2981 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2983 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LTEQ_in_expr2995 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2997 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr2999 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GTEQ_in_expr3011 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3013 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3015 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GT_in_expr3027 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3029 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3031 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LT_in_expr3043 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3045 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3047 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PLUS_in_expr3059 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3061 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3063 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MINUS_in_expr3075 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3077 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3079 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MULT_in_expr3091 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3093 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3095 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DIV_in_expr3107 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3109 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3111 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MOD_in_expr3123 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3125 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3127 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNARY_PLUS_in_expr3139 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3141 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNARY_MINUS_in_expr3153 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3155 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_in_expr3167 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3169 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CAST_EXPR_in_expr3181 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_expr3183 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_expr3185 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_primaryExpression_in_expr3196 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_START_TASK_in_expr3207 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3209 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_completion_in_expr3211 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DOT_in_primaryExpression3235 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3253 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primaryExpression3275 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_primaryExpression3324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualifiedIdentExpression_in_primaryExpression3331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_METHOD_CALL_in_primaryExpression3340 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3342 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_arguments_in_primaryExpression3344 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_INDEX_in_primaryExpression3353 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3356 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_expression_in_primaryExpression3358 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LOCAL_DECLARATION_in_primaryExpression3367 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_primaryExpression3369 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_primaryExpression3371 = new BitSet(new long[]{0x0000000000040008L});
    public static final BitSet FOLLOW_expression_in_primaryExpression3373 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_literal_in_primaryExpression3382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_newExpression_in_primaryExpression3390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_reservedPrefix_in_primaryExpression3398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CAST_EXPR_in_primaryExpression3406 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_primaryExpression3408 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_expression_in_primaryExpression3410 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedIdentExpression3429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_METHOD_CALL_in_qualifiedIdentExpression3436 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedIdentExpression3438 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_arguments_in_qualifiedIdentExpression3440 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_INDEX_in_qualifiedIdentExpression3448 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedIdentExpression3451 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_expression_in_qualifiedIdentExpression3453 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_CONSTRUCTOR_CALL_in_newExpression3472 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_arguments_in_newExpression3474 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARGUMENT_LIST_in_arguments3491 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_argumentList_in_arguments3493 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARGUMENT_LIST_EVENT_in_eventArguments3508 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_argumentEventList_in_eventArguments3510 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_argument_in_argumentList3525 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_argumentEvent_in_argumentEventList3538 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ARGUMENT_in_argument3553 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_argument3555 = new BitSet(new long[]{0x0000000000000008L,0xD43DC00020000000L,0x0017FFFFBFEF1CCEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_name_in_argument3557 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARGUMENT_in_argumentEvent3572 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_evParamName_in_argumentEvent3574 = new BitSet(new long[]{0x0000000000000008L,0xD43DC00020000000L,0x0017FFFFBFEF1CCEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_name_in_argumentEvent3576 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_evParamName0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_modifier0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualifiedType_in_type3679 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arrayType_in_type3688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_pointerType_in_type3698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_233_in_type3707 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedType3730 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_DOT_in_qualifiedType3733 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_qualifiedType3735 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_name_in_qualifiedName3756 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_qualifiedName3767 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedName_in_qualifiedName3769 = new BitSet(new long[]{0x0000000000000000L,0xD43DC00020000000L,0x0017FFFFBFEF1CCEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_name_in_qualifiedName3771 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_reservedPrefix0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ARRAY_TYPE_in_arrayType3824 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedType_in_arrayType3826 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_CSTYLE_in_arrayDeclarator3846 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_C_ARRAY_RANGE_in_arrayDeclarator3848 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POINTER_TYPE_in_pointerType3868 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_pointerType3870 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_STRUCT_in_cStruct3930 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cStruct3932 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cStruct3935 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_cStruct3937 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_ENUM_in_cEnum3952 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cEnum3954 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_cEnumMember_in_cEnum3956 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cEnumMember3971 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_literal_in_cEnumMember3973 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TYPEDEF_in_cTypeDef3988 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_cTypeDef3990 = new BitSet(new long[]{0x4800000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_type_in_cTypeDef3992 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_array4007 = new BitSet(new long[]{0x0020000000000002L});
    public static final BitSet FOLLOW_arrayDeclarator_in_array4012 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_reservedWord_in_name4029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENTIFIER_in_name4035 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WIDGETIDENTFIER_in_name4042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NO_PARAM_NAME_in_name4048 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_reservedWord0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_literal0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_booleanLiteral0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_in_sql_statement4565 = new BitSet(new long[]{0x0000000000000000L,0x00001A7C00000000L});
    public static final BitSet FOLLOW_sql_cursor_in_sql_statement4572 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_delete_in_sql_statement4578 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_execute_immediate_in_sql_statement4584 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_execute_procedure_in_sql_statement4590 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_fetch_cursor_in_sql_statement4596 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_insert_in_sql_statement4602 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_select_in_sql_statement4608 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_sql_update_in_sql_statement4614 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_set_in_sql_statement4620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_CURSOR_in_sql_cursor4639 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_cursor4641 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_sql_cursor_identifier_in_sql_cursor4643 = new BitSet(new long[]{0x0000000000008008L,0x0000000100000000L});
    public static final BitSet FOLLOW_arguments_in_sql_cursor4645 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_cursor4648 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_cursor_identifier4664 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_DELETE_in_sql_delete4680 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_sql_delete4682 = new BitSet(new long[]{0x0000000000000008L,0xD67DC04320000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_condition_in_sql_delete4684 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_delete4687 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_EXECUTE_IMMEDIATE_in_sql_execute_immediate4705 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_set_in_sql_execute_immediate4707 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_execute_immediate4715 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_EXECUTE_PROCEDURE_in_sql_execute_procedure4734 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_execute_procedure4736 = new BitSet(new long[]{0x0000000000008008L,0x0000000100000000L});
    public static final BitSet FOLLOW_arguments_in_sql_execute_procedure4738 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_execute_procedure4741 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_CURSOR_FETCH_in_sql_fetch_cursor4762 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_fetch_cursor4764 = new BitSet(new long[]{0x0000000000000000L,0x0000040200000000L});
    public static final BitSet FOLLOW_sql_cursor_next_in_sql_fetch_cursor4766 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_fetch_cursor4769 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_CURSOR_NEXT_in_sql_cursor_next4786 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_cursor_next4788 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_INSERT_in_sql_insert4808 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_sql_insert4810 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_column_list_in_sql_insert4812 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_insert4815 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_insert4817 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_SELECT_in_sql_select4842 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_select4844 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_column_list_in_sql_select4847 = new BitSet(new long[]{0x0000000000000000L,0x0000200200000000L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_select4849 = new BitSet(new long[]{0x0000000000000000L,0x0000200200000000L});
    public static final BitSet FOLLOW_table_list_in_sql_select4852 = new BitSet(new long[]{0x0000000000000008L,0xD67DC1C320000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_condition_in_sql_select4854 = new BitSet(new long[]{0x0000000000000008L,0xD67DC1C320000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_group_by_in_sql_select4857 = new BitSet(new long[]{0x0000000000000008L,0xD67DC14320000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_condition_in_sql_select4860 = new BitSet(new long[]{0x0000000000000008L,0x0000010100000000L});
    public static final BitSet FOLLOW_order_by_in_sql_select4863 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_select4866 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_UPDATE_in_sql_update4884 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_sql_update4886 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
    public static final BitSet FOLLOW_on_session_in_sql_update4888 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_GROUP_BY_in_group_by4912 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_column_name_in_group_by4915 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_group_by4917 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_SQL_ORDER_BY_in_order_by4937 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_column_name_in_order_by4940 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_order_by4942 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_ON_SESSION_in_on_session4968 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_on_session4970 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SQL_VARIABLE_in_sql_variable_reference4995 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_sql_variable_reference4997 = new BitSet(new long[]{0x0000000000040008L});
    public static final BitSet FOLLOW_MULT_in_column_list5017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_column_name_in_column_list5024 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
    public static final BitSet FOLLOW_COMMA_in_column_list5027 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_column_name_in_column_list5029 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_column_name5047 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SQL_TABLE_NAMES_in_table_list5061 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_table_name_in_table_list5063 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_table_name5080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_logical_term_in_sql_condition5095 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0008000000000000L});
    public static final BitSet FOLLOW_OR_in_sql_condition5099 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_logical_term_in_sql_condition5101 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0008000000000000L});
    public static final BitSet FOLLOW_sql_logical_factor_in_sql_logical_term5120 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0010000000000000L});
    public static final BitSet FOLLOW_AND_in_sql_logical_term5124 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_logical_factor_in_sql_logical_term5126 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0010000000000000L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5155 = new BitSet(new long[]{0x0000000000000000L,0x0040800000000000L,0x1F00000000000000L});
    public static final BitSet FOLLOW_sql_comparison_op_in_sql_logical_factor5157 = new BitSet(new long[]{0x0000000000000000L,0xD43DC00220000000L,0x0017FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5172 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5174 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L});
    public static final BitSet FOLLOW_IN_in_sql_logical_factor5177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5189 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5191 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_logical_factor5194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5206 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5208 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_logical_factor5211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_sql_logical_factor5223 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_IS_in_sql_logical_factor5225 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5227 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_sql_logical_factor5230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quantified_factor_in_sql_logical_factor5242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_sql_logical_factor5255 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_condition_in_sql_logical_factor5257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LPAREN_in_sql_logical_factor5269 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_condition_in_sql_logical_factor5271 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
    public static final BitSet FOLLOW_RPAREN_in_sql_logical_factor5273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_variable_reference_in_sql_simple5290 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualifiedName_in_sql_simple5295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_comparison_op_in_quantified_factor5319 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_sql_simple_in_quantified_factor5321 = new BitSet(new long[]{0x0000000000000000L,0x0040804000000000L,0x1F00000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_subquery_in_quantified_factor5323 = new BitSet(new long[]{0x0000000000000008L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_quantified_factor5325 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_in_quantified_factor5339 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_quantified_factor5342 = new BitSet(new long[]{0x0000000000000000L,0x0040804000000000L,0x1F00000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_subquery_in_quantified_factor5344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_subquery_in_quantified_factor5357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_sql_comparison_op0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_select_in_subquery5434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forward_in_synpred2_ForteAST108 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_synpred104_ForteAST2061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EQ_in_synpred152_ForteAST2843 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_synpred152_ForteAST2845 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_synpred152_ForteAST2847 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EQ_in_synpred154_ForteAST2858 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_synpred154_ForteAST2860 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_START_TASK_in_synpred154_ForteAST2863 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_synpred154_ForteAST2865 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_completion_in_synpred154_ForteAST2867 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_AND_in_synpred160_ForteAST2963 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_synpred160_ForteAST2965 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_synpred160_ForteAST2967 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_in_synpred173_ForteAST3167 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_synpred173_ForteAST3169 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CAST_EXPR_in_synpred174_ForteAST3181 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_synpred174_ForteAST3183 = new BitSet(new long[]{0x0381400026004000L,0xD5FDC00020000000L,0xFFFFFFFFBFEF1CEEL,0x000014000003FF7FL});
    public static final BitSet FOLLOW_expr_in_synpred174_ForteAST3185 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_primaryExpression_in_synpred175_ForteAST3196 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_synpred177_ForteAST3235 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_synpred177_ForteAST3253 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred177_ForteAST3275 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_qualifiedIdentExpression_in_synpred179_ForteAST3331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_METHOD_CALL_in_synpred180_ForteAST3340 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_synpred180_ForteAST3342 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_arguments_in_synpred180_ForteAST3344 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_INDEX_in_synpred181_ForteAST3353 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_synpred181_ForteAST3356 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_expression_in_synpred181_ForteAST3358 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_literal_in_synpred184_ForteAST3382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_reservedPrefix_in_synpred186_ForteAST3398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_condition_in_synpred306_ForteAST4854 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OR_in_synpred318_ForteAST5099 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_logical_term_in_synpred318_ForteAST5101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_AND_in_synpred319_ForteAST5124 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_logical_factor_in_synpred319_ForteAST5126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred320_ForteAST5155 = new BitSet(new long[]{0x0000000000000000L,0x0040800000000000L,0x1F00000000000000L});
    public static final BitSet FOLLOW_sql_comparison_op_in_synpred320_ForteAST5157 = new BitSet(new long[]{0x0000000000000000L,0xD43DC00220000000L,0x0017FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_simple_in_synpred320_ForteAST5159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred322_ForteAST5172 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_synpred322_ForteAST5174 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L});
    public static final BitSet FOLLOW_IN_in_synpred322_ForteAST5177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred324_ForteAST5189 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_synpred324_ForteAST5191 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred324_ForteAST5194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred326_ForteAST5206 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_synpred326_ForteAST5208 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred326_ForteAST5211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sql_simple_in_synpred328_ForteAST5223 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_IS_in_synpred328_ForteAST5225 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L,0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_NOT_in_synpred328_ForteAST5227 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_IDENTIFIER_in_synpred328_ForteAST5230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_quantified_factor_in_synpred329_ForteAST5242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_synpred330_ForteAST5255 = new BitSet(new long[]{0x0000000000000000L,0xD67DC04220000000L,0x1F17FFFFBFEF1CEEL,0x000004000000FF7CL});
    public static final BitSet FOLLOW_sql_condition_in_synpred330_ForteAST5257 = new BitSet(new long[]{0x0000000000000002L});

}
TOP

Related Classes of tool.model.grammar.ForteAST

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.